iOS 数据存储

一、plist存储
1.获取Documents的路径,有两种方式:
<1>

NSString *home = NSHomeDirectory();  // 获取应用程序沙盒目录
//  获取到根目录后,设置路径
NSString *path = [home stringByAppendingString:@"/Documents"];
NSString *path = [home stringByAppendingPathComponent:@"Documents"];

NSUserDomainMask 表示在在用户目录下搜索,YES代表用户目录的~(主目录),NSDocumentDirectory 表示查找Document文件夹;
<2>

NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

2.写入到文件中

NSArray *arr;
[arr writeToFile:path atomically:YES];
NSDictionary *dict;
[dict writeToFile:path atomically:YES];

plist只能存储系统自带的一些常规的类,也就是有writeToFile方法的对象才可以使用plist保存数据;(例如:字符串、字典、数据、NSNumber、NSData…)自定义对象不能保存到plist中;

二、Preferences
偏好设置是专门用来保存应用程序的配置信息的,一般情况不要在偏好设置中保存其它数据;利用系统的偏好设置来存储数据,默认存储在Preferences文件夹下面;偏好设置会将所有的数据保存到同一个文件中;
存取步骤:
1.获取NSUserDefaults对象

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

2.保存数据

[defaults setObject:@"ccflying" forKey:@"name"];
[defaults setInteger:24 forKey:@"age"];
此操作不会立即保存数据到文件中,会在将来的某一个时间点自动将数据保存到Preferences文件夹下面 。
[defaults synchronize]; //  使NSUserDefaults立即保存数据

3.使用NSUserDefaults读取数据

[defaults objectForKey:@"name"];

三、NSKeyedArchiver 归档(NSCoding)
如果想将一个自定义对象保存到文件中,该对象必须实现NSCoding协议;
NSCoding有两个重要的方法:
1.存储

-(void)encodeWithCoder:(NSCoder *)aCoder
{
    [aCoder encodeObject:self.name forKey:@"name"];
    [aCoder encodeInteger:self.age forKey:@"age"];
}  
// 当将一个自定义对象保存到文件的时候就会调用该方法,在该方法中实现具体的数据存储;

2.读取

-(id)initWithCoder:(NSCoder *)aDecoder
{
    if(self = [super init]){
    }
    return self;
}
// 当从文件中读取一个对象的时候就会调用此方法,在该方法中实现具体的数据的读取;

3.使用NSKeyedArchiver / NSKeyedUnarchiver存取对象

[NSKeyedArchiver archiveRootObject:p toFile:path];  // 存取数据
[NSKeyedUnarchiver unarchiveObjectWithFile:path];  // 读取数据

iOS会把PreferencesDocuments中的文件备份到iTunes;
tmp文件夹下的东西随时可能会被删除掉,而caches则不会;

四、文件解压缩
1.解压

NSString filepath; 
NSString caches;
[NSZipArchive unzipFileAtPath:filepath toDestination:caches]; 
// 该操作比较耗时

2.压缩

NSArray *pngs = [[NSBundle mainBundle] pathsForResourcesOfType:@"png" inDirectory:nil];  // 获取图片数组
NSString *path;  // .../pngs.zip
[NSZipArchive createZipFileAtPath:path withFilesAtPaths:pngs];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值