如何使用文件存档存储NSObject类的对象

时间:2014-06-10 10:27:59

标签: ios objective-c nsobject nskeyedarchiver

我正在尝试使用文件存档来存储NSObject类的对象。我试过的时候

[NSKeyedArchiver archiveRootObject:myObject toFile:@"filePath"];

NSArray *myArray=@[myObject];
[NSKeyedArchiver archiveRootObject:myObject toFile:@"FilePath"];

但两者都返回警告!!

  

* 由于未捕获的异常而终止应用   'NSInvalidArgumentException',原因:' - [ePub encodeWithCoder:]:   无法识别的选择器发送到实例0xeac3570'

1 个答案:

答案 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。