应用数据存储的常用方式
-
XML
属性列表(plist
)归档:一般用于存储数组和字典,不能存储自定义对象
plist文件操作——传送门
-
Preference
(偏好设置):存储键值对
沙盒管理——传送门
-
NSKeyedArchiver
归档(NSCoding
):存储自定义对象
可以存储数组,数组里面存储你的对象集,也会自动帮你归档解档
Teacher类内部 需要遵守的协议<NSCoding>
内部新增方法
-(void)encodeWithCoder:(NSCoder *)aCoder{
[aCoder encodeObject:_name forKey:@"name"];
[aCoder encodeInt:_age forKey:@"age"];
}
-(instancetype)initWithCoder:(NSCoder *)aDecoder{
if(self=[super init]){
_name = [aDecoder decodeObjectForKey:@"name"];
_age = [aDecoder decodeObjectForKey:@"age"];
}
return self;
}
NSString *tmpPath = NSTemporaryDiretory();
NSString *filePath = [tmpPath stringByAppendingPathComponent:@"teacher.data"];
Teacher *tea = [Teacher new];
tea.name = @"teacher";
tea.age = 18;
[NSKeyedArchiver archiveRootObject:tea toFile:filePath];
Teacher *tea = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];