码迷,mamicode.com
首页 > 移动开发 > 详细

IOS的四种数据存储方式和优略

时间:2015-08-09 20:45:08      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:四种数据存储方式   nsuserdefa   持久化   sqlite   coredata   

IOS有四种常用数据存储方式:
第一种方法:用NSUserDefaults存储配置信息
NSUserDefaults被设计用来存储设备和应用的配置信息,它通过一个工厂方法返回默认的、也是最常用到的实例对象。这个对象中储存了系统中用户的配置信息,开发者可以通过这个实例对象对这些已有的信息进行修改,也可以按照自己的需求创建新的配置项。他在IOS6之后已经在文件沙盒中看不到它的信息了,所以可以存储机密信息(用户名和密码)密码,防止手机系统被破解后看你的沙盒子文件。一般这种方法存储少量信息,若是存储大量信息,如存储一百个数据你怎么记录键值啊?所以它不利于统一管理。所以不建议采用。
+ (void)setUserDefaultsValue:(id)value key:(NSString *)key
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

[userDefaults setObject:value forKey:key];
[[NSUserDefaults standardUserDefaults] synchronize];

}

  • (id)objectForKey:(NSString *)key
    {
    return [[NSUserDefaults standardUserDefaults] objectForKey:key];
    }

调用:
NSString *selectedKey = [[NSUserDefaults standardUserDefaults] objectForKey:@”selectedKey”];

第二种方法:方法用CoreData规划应用中对象
一个支持持久化的,对象图和生命周期的自动化管理方案。严格意义上说CoreData是一个管理方案,他的持久化可以通过SQLite、XML或二进制文件储存。如官方定义所说,CoreData的作用远远不止储存数据这么简单,它可以把整个应用中的对象建模并进行自动化的管理。他和微软的MFC::CArchive实现对象的持久化和反持久化一样只能支持支持具有序列化的函数,把对象分解成基本数据类型的类型的持久化,如字符串,整形数字,浮点型数据,字符。由于持久化的对象数据都在一个对象中,所以他利于数据管理。所以采用CoreData存储数据就不需要采用NSUserDefaults数据存储数据了。
第三种方法:文件沙盒存储
主要存储非机密数据,大的数据。如:下载的图片,没有键值的分行记录。注意若系统被破解了你的沙盒中的文件可以被别人获得。这种方法操作很简单。
//写文件
+ (void)writeToDocumentWithImageData:(NSData )data name:(NSString )fileName
{
NSString *path = [self filePath:fileName];

[data writeToFile:path atomically:YES];

}
//获取文件路径
+ (NSString*)filePath:(NSString*)fileName {
NSArray* myPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* myDocPath = [myPaths objectAtIndex:0];
NSString* filePath = [myDocPath stringByAppendingPathComponent:fileName];
return filePath;
}
第四种方法:数据库存储
iOS的SDK里预置了SQLite的库,开发者可以自建SQLite数据库。SQLite每次写入数据都会产生IO消耗,把数据归档到相应的文件。
SQLite擅长处理的数据类型其实与NSUserDefaults差不多,也是基础类型的小数据,只是从组织形式上不同。开发者可以以关系型数据库的方式组织数据,使用SQL DML来管理数据。 一般来说应用中的格式化的文本类数据可以存放在数据库中,尤其是类似聊天记录、Timeline等这些具有条件查询和排序需求的数据。
无论你采用系统自带的还是用的SQLight第三方库的数据存储本质都数据库存储,没必要再另外分类。数据存储稍微麻烦,并且存储的速度较慢,只有真正需要用到的地方才采用这种方式,如:聊天记录,地图地理信息查询。

版权声明:本文为博主原创文章,未经博主允许不得转载。

IOS的四种数据存储方式和优略

标签:四种数据存储方式   nsuserdefa   持久化   sqlite   coredata   

原文地址:http://blog.csdn.net/jia12216/article/details/47379087

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!