//歸檔數據,並用二進制寫入文件
NSMutableData *data = [NSMutableData data];
NSKeyedArchiver *keyedArchiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[keyedArchiver encodeObject:Users forKey:@"users"];//Users已知的保存用戶信息的數組
[keyedArchiver finishEncoding];
[data writeToFile:@"歸檔數據保存路徑" atomically:YES];
//讀取上面已經保存好的文件,並反歸檔後在程序中使用數據
NSData *newData = [NSData dataWithContentsOfFile:@"歸檔數據保存路徑"];
NSKeyedUnarchiver *keyedUnArchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:newData];
NSArray *users = [keyedUnArchiver decodeObjectForKey:@"users"];
for (User *user in users) {
NSLog(@"name = %@ pw = %@",u.name,u.password);
}
注意:需要歸檔的數據中如果含有自定義的對象,那麼該對象需遵守<NSCoding>協議,並重寫如下方法:
- (void)encodeWithCoder:(NSCoder *)aCoder{
[aCoder encodeObject:對象屬性 forKey:@"歸檔的key"];
}
- (id)initWithCoder:(NSCoder *)aDecoder{
self = [super init];
if (self) {
實例變量 = [aDecoder decodeObjectForKey:@"歸檔的key"];
}
return self;
}