单个对象归档:
NSArray *array = @[@"111", @"aaa", @333, @"asdf3111"];
NSString *homePath = NSHomeDirectory();
NSString *filePath = [homePath stringByAppendingPathComponent:@"test.txt"];
BOOL result = [NSKeyedArchiver archiveRootObject:array toFile:filePath];
if (result) {
NSLog(@"archiver success");
}
//解归档
NSString *homePath = NSHomeDirectory();
NSString *filePath = [homePath stringByAppendingPathComponent:@"test.txt"];
NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
NSLog(@"%@", array);
多个对象归档:
//NSMutableData NSKeyedArchiver配合 归档多个对象
NSString *homePath = NSHomeDirectory();
NSString *filePath = [homePath stringByAppendingPathComponent:@"multiple.data"];
NSMutableData *mutableData = [NSMutableData data];
//使用mutableData创建归档对象
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:mutableData];
NSArray *array = @[@"ary1", @"ary2"];
[archiver encodeInt:20 forKey:@"intKey"];
[archiver encodeObject:array forKey:@"arrayKey"];
[archiver encodeObject:@"NSString value" forKey:@"stringkey"];
[archiver finishEncoding];
[archiver release];
BOOL result = [mutableData writeToFile:filePath atomically:YES];
if (result) {
NSLog(@"写入成功");
}
//NSData 配合NSKeyedUnarchiver解归档多个对象
NSString *homePath = NSHomeDirectory();
NSString *filePath = [homePath stringByAppendingPathComponent:@"multiple.data"];
NSData *data = [NSData dataWithContentsOfFile:filePath];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
int intVal = [unarchiver decodeIntForKey:@"intKey"];
NSArray *aryVal = [unarchiver decodeObjectForKey:@"arrayKey"];
NSString *strVal = [unarchiver decodeObjectForKey:@"stringkey"];
NSLog(@"intVal %d", intVal);
NSLog(@"aryVal %@", aryVal);
NSLog(@"strVal %@", strVal);
[unarchiver release];