数据持久化二之对象解归档

前面讲了属性列表,这里继续讲ios数据持久化二之对象的解归档,以前博客也有讲到,能够查看;ios

二。对象解归档code

要使用对象归档,对象就必须遵照NSCoding协议,大部分OC对象都遵照NSCoding协议,也能够在自定义对象中实现该协议,要实现该协议,必须实现两个协议方法对象

- (void)encodeWithCoder:(NSCoder *)aCoderget

- (instancetype)initWithCoder:(NSCoder *)aDecoder;博客

这两个方法是必须实现的协议方法,若是不识闲那么将会报错,it

- (void)encodeWithCoder:(NSCoder *)aCoder{io

//这里必须是User类的属性(须要数据持久化操做的属性)file

[aCoder encoderObject:[NSNumber numberWithInteger:self.userId] forKey@"userId"];方法

[aCoder encoderObjectself.name forKey:@"name"];error

}

第二个方法:

- (instancetype)initWithCoder:(NSCoder *)aDecoder{

if (self == [super init]){

//这里的userId必须和第一方方法中的一直,不然仍是读取不到数据

self.userId = [[aDecoder decodeObjectForKey:@"userId"] integerValue];

self.name =  [aDecoder decodeObjectForKey:@"name"];

}

return self;

}

最后怎么使用?

+(BOOL) save{

NSError *error = nil;

//肯定存储路劲,一半都是沙盒路径下的Document文件

NSString *fileName = [self getFileName];

NSString *filePath = [self getFilePath];

if(![[NSFileManager defaultManager] createDirectoryAtPath:filePath withIntermediateDirectories :YES attributes:nil err:&error]){

return NO;

}

return [NSKeyedArchiver archiveRootObject:self toFile:[fileName:userId]];

 

}

相关文章
相关标签/搜索