由 Kingiol 构建
Mike Mayo Rackspace 移动应用 [email protected] twitter: @greenisus
这些是一些简单的类库,简化了通过 NSCoding 来实现对象持久化。这段代码是从 Rackspace Cloud / OpenStack iOS 应用程序 http://launchpad.net/openstack-ios 中提取出来的。
如果您不想使用 CocoaPods,只需将 Archiver.h
,Archiver.m
,NSObject+NSCoding.h
和 NSObject+NSCoding.m
拖入您的项目中。
然后,在 Groups & Files
中的 Frameworks
上右键点击,选择 添加
-> 现有框架...
并选择 libobjc.A.dylib
。
此类可以将符合 NSCoding 协议的对象读取到磁盘和从磁盘写入。
SomeClass *myObject = [[[SomeClass alloc] init] autorelease];
myObject.someProperty = @"Hello world";
[Archiver persist:myObject key:@"myObject"];
// later on somewhere else...
SomeClass *myObject = [Archiver retrieve:@"myObject"];
这个类别通过遍历类中的属性,为您编码/解码它们,简化了实现 NSCoding。它可以持久化基本类型(如 int 和 float)以及任何符合 NSCoding 的对象。
在您的类头中,实现 NSCoding 接口
@interface Model : NSObject <NSCoding>
在您的类实现中,调用自动方法
- (void)encodeWithCoder:(NSCoder *)coder {
[self autoEncodeWithCoder:coder];
}
- (id)initWithCoder:(NSCoder *)coder {
if (self = [super init]) {
[self autoDecode:coder];
}
return self;
}
NSObject+NSCoding 使用 MIT 许可证发布。该许可证的完整描述可在 LICENSE 文件中找到。