NSKeyedUnarchiver的例外情况,但一切正常

时间:2017-02-10 23:17:29

标签: objective-c nskeyedarchiver nscoder nskeyedunarchiver

我得到奇怪的例外:

-[NSKeyedUnarchiver initForReadingWithData:]: data is empty; did you forget to send -finishEncoding to the NSKeyedArchiver?

反序列化之前使用NSKeyedArchiver 通过网络传输的对象。一切都正常(数据是相同的),但这种异常使记录很烦人。但是,当我在本地序列化 - 反序列化时,不会发生异常。

这是我如何序列化对象:

NSData *payload = [NSKeyedArchiver archivedDataWithRootObject:object];

以下是我反序列化对象的方法:

NCNamespaceObject *object = [NSKeyedUnarchiver unarchiveObjectWithData:payload];

这是对象的encodeWithCoder:方法(super的方法为空):

-(void)encodeWithCoder:(NSCoder *)aCoder
{
    [super encodeWithCoder:aCoder];
    [aCoder encodeObject:self.text forKey:@"text"];
}

最后,这是对象的初始化器:

-(instancetype)initWithCoder:(NSCoder *)aDecoder
{
    if (self = [super initWithCoder:aDecoder])
    {
        _text = [aDecoder decodeObjectForKey:@"text"];
    }
    return self;
}

不确定为什么会一直发布此错误...

0 个答案:

没有答案