NSCoding是一个简单的协议,有两个方法:-initWithCoder:和encodeWithCoder:。遵循NSCoding协议的类可以被序列化和反序列化,这样可以归档到磁盘上或分发到网络上。
举个例子:

以上Books类约定了NSCoding协议,那么我们就可以通过NSKeyedArchiver或NSKeyedUnarchiver把对象读取/写入磁盘。
如下:
Archiving
[NSKeyedArchiver archiveRootObject:bookstoFile:@"/path/to/archive"];
Unarchiving
[NSKeyedUnarchiver unarchiveObjectWithFile:@"/path/to/archive"];
也可以转成NSData以便存储,如下:
Archiving
NSData*data=[NSKeyedArchiver archivedDataWithRootObject:books];
[[NSUserDefaults standardUserDefaults] setObject:dataforKey:@"books"];
Unarchiving
NSData*data=[[NSUserDefaults standardUserDefaults]objectForKey:@"books"];
NSArray*books=[NSKeyedUnarchiver unarchiveObjectWithData:data];
网友评论