数据存储的几个问题

2016-05-24  本文已影响0人  阳光沙滩海浪狗尾巴草

1.app中的沙盒结构

1.1Documents : 保持应用运行时产生的需要持久化保存的比较重要的数据,itunes同步设备时会同步该目录苹果不允许把网络下载的文件存在此文件夹,eg:游戏应用可将游戏存档保存在该目录

1.2Temp: 保存应用运行时产生的临时的数据,使用完毕后将文件从该目录删除,应用没运行时 系统可能会清理该部分的数据,itunes不会备份该目录文件

1.3Library : 其中包括两个子目录Caches和preference,caches中保存运行时产生的需要持久化的数据.

itunes不会备份该部分文件.一般保存体积较大的非重要数据.

preference中保存的是应用的所有偏好设置IOS的setting设置会在该目录中查找应用的设置信息.itunes会同步该部分目录.

2.数据存储的几种方式

2.1plist存储: 一般存储字典或数组 具体步骤:

获取沙盒路径:NSString*cachePath =

NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES)[0];

拼接存储路径:NSString*filePath = [cachePathstringByAppendingPathComponent:@"agePlist.plist"];

存储文件:

NSDictionary*dict =@{@"age":@18,@"name":@"gaowei"};

[dictwriteToFile:filePathatomically:YES];

读取文件:

NSDictionary*dict = [NSDictionarydictionaryWithContentsOfFile:filePath];

2.2  preference:存储用户的一些偏好设置,实质也是自动生成一个plist文件在沙盒的preference中. 具体步骤:

创建NSUserDefaults的单例对象

NSUserDefaults*defautls = [NSUserDefaults

standardUserDefaults];

根据键值进行存储

[defautlssetObject:@"gaowei"forKey:@"name"];[defautlssetBool:YESforKey:@"isBool"];           [defautlssetInteger:5forKey:@"num"];

取值

NSString*str = [[NSUserDefaultsstandardUserDefaults]objectForKey:@"name"];

BOOLisBool =[[NSUserDefaultsstandardUserDefaults]boolForKey:@"isBool"];

NSIntegernum = [[NSUserDefaultsstandardUserDefaults]integerForKey:@"num"];

2.3 归档存储(NSKeyedArchiver):存储自定义对象但只能整存争取 且通过plist保存的数据是直接打开的而通过归档存储的数据打开是乱码的更安全具体步骤后续会补充

2.4 SQLite:数据库存储在其他平台也可以使用,相对归档的整存争取方式SQLite存储更加灵活可以分块存取效率更高主要分DDL,DML,DQL三种对数据库的操作方式具体后续会补充

2.5 CoreData:实际对SQLite的封装

上一篇 下一篇

猜你喜欢

热点阅读