只针对于Foundation对象的归档:
使用XML属性列表归档,结果物为XML文件,属性列表归档只针对于Foundation对象,若数组或字典集合中有某些自定义的类的对象,则不能用这个方法归档。
归档使用的方法:
使用Foundation类中自带的方法:- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
相对应的解析方法:-(id)initWithContentOfFile:(NSString *)filePath;
这两个方法是相对应的。用自带的方法归档,就必须用自带的方法读取文件。如果用别的方法读取会出现异常。
归档自定义类的方法:
用NSArchiver和NSKeyedArchiver归档。
在IOS SDK中没有NSArchiver(NSArchiver 是mac os SDK中的方法)。只能用 NSKeyedArchiver 和 NSKeyedUnArchiver进行归档和解析操作。
NSArray *[email protected][@"1",@"2",@"3"];
[NSKeyedArchiver archiveRootObject:array toFile:@"arrTemp"]; //归档操作
NSArray *arr=[NSKeyedUnarchiver unarchiveObjectWithFile:@"arrTemp"]; //读取文件操作
自定义的类用NSKeyedArchiver进行带键值对的归档时要遵循<NSCoding>协议方法并实现。
//进行归档的编码方式
- (void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeObject:bookName forKey:@"name"];
}
//读取文件进行解码的方式
- (id)initWithCoder:(NSCoder *)aDecoder
{
self.bookName = [aDecoder decodeObjectForKey:@"name"];
return self;
}