数据存储之属性列表Plist
常用的数据存储有属性列表、偏好设置、归档、sqlite、coreData。上一博客了解了沙盒,现在了解下属性列表Plist。
通常通过NSArray、NSDictionary集合类的WriteToFile:atomically方法将他们存储到属性列表中。在属性列表能保存的数据类型如下
所以可以序列化的类有以下这些:
NSArray、NSMutableArray、NSDictionary、NSMutableDictionary、NSData、NSMutableData、NSDate、NSString、NSMutableString、NSNumber
对Boolean类型的数据进行读写时,需先转为NSNumber类型,然后通过NSNumber的boolValue方法读取。
// // ViewController.m // Plist // // Created by City--Online on 15/4/21. // Copyright (c) 2015年 CYW. All rights reserved. // #import "ViewController.h" #import "Student.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; NSArray *array= NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); NSString *path=[array objectAtIndex:0]; #if 0 //数组 NSString *filePath=[path stringByAppendingPathComponent:@"students.plist"]; NSLog(@"%@",filePath); #if 0//数组写数据 NSArray *array1=[[NSArray alloc]initWithObjects:@"a",[NSDate date],@20.9,[NSNumber numberWithBool:YES],nil] //YES 通过atomically参数让该方法将数据写入辅助文件,而不是写入指定位置。成功写入该文件后,该辅助文件将被复制到第一个参数指定的位置.这是更安全的写入方法,因为如果应用程序在保存期间崩溃,则现有文件不会被破坏。虽增加开销,但在大多数情况还是值得的。 [array1 writeToFile:filePath atomically:YES]; #elif 1 //数组读数据 // NSArray *array1=[[NSArray alloc]initWithContentsOfFile:filePath]; NSArray *array1=[NSArray arrayWithContentsOfFile:filePath]; for (NSString *s in array1) { NSLog(@"%@",s); } #endif #elif 1 //字典 NSString *filePath=[path stringByAppendingPathComponent:@"studentsdic.plist"]; NSLog(@"%@",filePath); #if 0//字典写入 NSDictionary *dic=[[NSDictionary alloc]initWithObjects:@[@"a",@"b",@"c"] forKeys:@[@"1",@"2",@"3"]]; [dic writeToFile:filePath atomically:NO]; #elif 1 //字典读数据 // NSDictionary *dic=[NSDictionary dictionaryWithContentsOfFile:filePath]; NSDictionary *dic=[[NSDictionary alloc]initWithContentsOfFile:filePath]; for (NSString * s in dic.allKeys) { NSLog(@"%@",[dic objectForKey:s]); } #endif #endif } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end // //获取沙盒根目录 // NSString *home=NSHomeDirectory(); // NSLog(@"沙盒根目录:%@\n\n",home); // // //获取Documents目录 不建议采用 // NSString *documents=[home stringByAppendingPathComponent:@"Documents"]; // NSLog(@"字符串拼接获取Documents:%@\n\n",documents); // // //NSUserDomainMask 代表从用户文件夹下找 // //YES 代表展开路径中的波浪字符“~” NO ~/Documents // NSArray *array=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, NO); // // 在iOS中,只有一个目录跟传入的参数匹配,所以这个集合里面只有一个元素 // NSString *documents1=[array objectAtIndex:0]; // NSLog(@"通过方法NSSearchPathForDirectoriesInDomains获取Documents:%@\n\n",documents1); // // //获取tmp文件目录 // NSLog(@"tmp 文件目录:%@\n\n",NSTemporaryDirectory()); // // //获取Library/Caches: // NSArray *arrayCaches=NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); // NSLog(@"Library/Caches:%@",arrayCaches[0]); // // //Library/Preference:通过NSUserDefaults类存取该目录下的设置信息
数据存储之属性列表Plist的更多相关文章
- iOS数据存储之属性列表理解
iOS数据存储之属性列表理解 数据存储简介 数据存储,即数据持久化,是指以何种方式保存应用程序的数据. 我的理解是,开发了一款应用之后,应用在内存中运行时会产生很多数据,这些数据在程序运行时和程序一起 ...
- iOS 应用数据存储方式(XML属性列表-plist)
iOS 应用数据存储方式(XML属性列表-plist) 一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存储自定义对象) ...
- iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist)
iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist) 一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存 ...
- iOS数据持久化存储之属性列表
属性列表(plist) iOS提供了一种plist格式的文件(属性列表)用于存储轻量级的数据,属性列表是一种XML格式的文件,拓展名为plist.如果对象是NSString.NSDictionary. ...
- iphone开发中数据持久化之——属性列表序列化(一)
数据持久化是应用程序开发过程中的一个基本问题,对应用程序中的数据进行持久化存储,有多重不同的形式.本系列文章将介绍在iphone开发过程中数据持久化的三种主要形式,分别是属性列表序列号.对象归档化以及 ...
- ios应用数据存储方式(XML属性列表-plist) - 转
一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存储自定义对象) 4.SQLite3(数据库,关系型数据库,不能直 ...
- HTML5 Canvas 数据持久化存储之属性列表
属性列表想必大家都不会陌生,正常用 HTML5 来做的属性列表大概就是用下拉菜单之类的,而且很多情况下,下拉列表还不够好看,怎么办?我试着用 HT for Web 来实现属性栏点击按钮弹出多功能选框, ...
- [Objective-C] 012_数据持久化_XML属性列表,NSUserDefaults
在日常开发中经常要对NSString.NSDictionary.NSArray.NSData.NSNumber这些基本类的数据进行持久化,我们可以用XML属性列表持久化到.plist 文件中,也可以用 ...
- iOS - OC PList 数据存储
前言 直接将数据写在代码里面,不是一种合理的做法.如果数据经常改,就要经常翻开对应的代码进行修改,造成代码扩展性低.因此,可以考虑将经常变的数据放在文件中进行存储,程序启动后从文件中读取最新的数据.如 ...
随机推荐
- CSS 基础 优先级 选择器 继承
1.样式优先级 (内联样式)Inline style > (内部样式)Internal style sheet > (外部样式)External style ...
- RGB-D 室内导航 paper
摘要: 最近打算使用Kinect实现机器人的室内导航,收集了近年来的一些比较好的文章.<基于Kinect系统的场景建模与机器人自主导航>.<Mobile Robots Navigat ...
- 用WPF写一个登录界面,我想在输入完密码后按回车就能够验证登陆,而不需要用鼠标单击登陆按钮
在wpf中,将按钮的IsDefault设置为true
- Linux下安装MySQL以及一些小坑
第一次写博客,各位凑合着看吧(假装有人看). 我这里使用的是centos7. 1.首先打开终端,查看有没有安装过MySQL: [root@localhost lyp]# rpm -qa | grep ...
- AJPFX讲解外汇保证金交易的货币符号和外汇的报价方式
AJPFX:外汇保证金交易的货币符号 认识货币名字是必须的入门基础,通过货币符号,首先要知道买卖哪个货币,下面是一些货币的符号.买卖外汇就是这些任意其中某两种货币的比值,也就是汇率.根据汇率比的升高或 ...
- Android RelativeLayout wrap_content 而且 child view 使用 layout_alignParentBottom 时 RelativeLayout 高度会占满屏幕
Android RelativeLayout wrap_content 而且 child view 使用 layout_alignParentBottom 时 RelativeLayout 高度会占满 ...
- RegexHelper.js
var Validator = { VerityLib: { //验证字符串非空 IsNotEmpty: function (input) { if (input != '') { return tr ...
- Go语言学习笔记(1)——Hello World!
第一个go程序——HelloWorld.go 源码 : package main import ("fmt") // import "fmt" func mai ...
- [Leetcode]315.计算右侧小于当前元素的个数 (6种方法)
链接 给定一个整数数组 nums,按要求返回一个新数组 counts.数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量. 示例: 输 ...
- SQLAlchemy介绍和基本使用
pymysql:pymysql是用Python来操作mysql的包,因此通过pip来安装,命令如下:pip3 install pymysql.如果您用的是Python 3,请安装pymysql 豆瓣源 ...