數據持久化二之對象解歸檔

前面講了屬性列表,這裏繼續講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]];

 

}

相關文章
相關標籤/搜索