Foundation--NSKeyedArchiver與NSKeyedUnarchiver

//歸檔數據,並用二進制寫入文件
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;
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章