iOS的本地化数据存储

l XML 属性列表( plist )归档
l Preference( 偏好设置 )
l NSKeyedArchiver 归档
l SQLite3数据库

lCore Data

lRealm


一 ,XML 属性列表( plist )归档
1,获取沙盒根路径
NSString *home = NSHomeDirectory();
2,获取document路径
NSString *docPath = [home stringByAppendingPathComponent:@"Documents"];
3,写入plist文件
// 拼接文件的全路径
NSString *filePath = [docPath stringByAppendingPathComponent:@"data.plist"];
// 写入
[data writeToFile:filePath atomically:YES];

二 ,Preference( 偏好设置 )
本质还是Plist属性列表的方式进行存储
不用关心文件夹和文件名
只能存储到一个文件中(不能存放大批量数据)
//当你想简简单单存一些键值对,又不想操纵某个文件和文件夹时,用这种方式
1,直接访问软件的偏好设置(library/preferences)
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
2,存储数据
[defaults setObject:(id) forKey:(NSString *)];
3,立刻同步
[defaults synchronize];
4,读取
obj = [defaults objectForKey:@"account"];

三,归档普通对象
能将任何遵守了NSCoding协议的对象塞进文件中

// 创建一个自定义的数据类型对象P
MyObject *p = [[MyObject alloc] init];
p.name = @"jack";
P.age = 10;
p.height = 1.55;
// 路径
NSString *path = @"/Users/apple/Desktop/person.data";

1,归档
[NSKeyedArchiver archiveRootObject:p toFile:path];
将对象归档的时候会调用(将对象写入文件之前会调用)
// 在这个方法说清楚:
// 1,那些属性需要存储
// 2,怎样存储这些属性
- (void)encodeWithCoder:(NSCoder *)encoder
{
   // 将_name属性值进行编码(会将_name的值存进文件)
   [encoder encodeObject:_name forKey:@"name"];
   [encoder encodeObject:_age forKey:@"age"]; 
   [encoder encodeObject:_height forKey:@"height"]; 
}
2,读档(反归档)
MyObject *p = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
当从文件中解析对象的时会调用
// 在这个方法说清楚:
// 1,那些属性需要解析(读取)
// 2,怎样解析(读取)这些属性
- (void)encodeWithCoder:(NSCoder *)encoder
{
   [encoder encodeObject:_name forKey:@"name"];
   [encoder encodeObject:_age forKey:@"age"]; 
   [encoder encodeObject:_height forKey:@"height"]; 
}
四,SQLite3
适用于存储大批量数据
五,Core Data
IOS 5.0出现

效率底下(封装了SQLite3)

,Realm

Github地址:https://github.com/realm/realm-cocoa


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值