我正在尝试使用文件存档来存储NSObject类的对象。我试过的时候
[NSKeyedArchiver archiveRootObject:myObject toFile:@"filePath"];
和
NSArray *myArray=@[myObject];
[NSKeyedArchiver archiveRootObject:myObject toFile:@"FilePath"];
但两者都返回警告!!
* 由于未捕获的异常而终止应用 'NSInvalidArgumentException',原因:' - [ePub encodeWithCoder:]: 无法识别的选择器发送到实例0xeac3570'
答案 0 :(得分:1)
你需要在你的NSObject中放入encodeWithCoder和Decoder:
标题中的:
- (void)encodeWithCoder:(NSCoder *)coder;
- (id)initWithCoder:(NSCoder *)coder;
你的.m 中的
- (void)encodeWithCoder:(NSCoder *)coder;
{
[coder encodeObject:self.yourProperty forKey:@"yourProperty"];
}
- (id)initWithCoder:(NSCoder *)coder;
{
self = [super init];
if (self != nil)
{
self.yourProperty = [coder decodeObjectForKey:@"yourProperty"];
}
return self;
}
您需要为所有属性执行此操作。
请注意,对于其他类型,如整数和浮点数,请相应地使用decodeIntForKey和EncodeInt。