【问题标题】:NSCoding encode Array of ObjectsNSCoding 编码对象数组
【发布时间】:2014-09-05 11:09:34
【问题描述】:

我需要对包含多个自定义NSObject 类实例的数组进行编码。但是,这样做时,它会返回带有消息的崩溃:

-[Person encodeWithCoder:]:无法识别的选择器发送到实例 0x8ff2c50

该类包含多个属性,并将它们存储为一个集合是该类的目的。

它崩溃的编码器方法是这样的:

- (void)encodeWithCoder:(NSCoder *)encoder 
{
    [encoder encodeObject:_arrayOfPeople forKey:@"DataStoragePeopleArray"];
}

【问题讨论】:

  • 你也需要对你的 NSObject 类属性进行编码。

标签: ios objective-c


【解决方案1】:

您需要在您的Person 类中实现NSCoding 协议。您希望编码的任何自定义类,包括当它包含在您正在编码的集合中时,都需要实现NSCoding。

您需要实现encodeWithCoder: 和initWithCoder:。

这是NSCoding 协议的文档:

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Protocols/NSCoding_Protocol/Reference/Reference.html

【讨论】:

    【解决方案2】:

    我希望它会起作用.....

    -(void)encodeWithCoder:(NSCoder *)aCoder
      {
       [aCoder encodeObject:_arrayOfPeople forKey:@"DataStoragePeopleArray"];
      }
    
    -(id)initWithCoder:(NSCoder *)aCoder
    {
       if(self = [super init]){
       self.yourpoperty = [aCoder decodeObjectforKey:@"DataStoragePeopleArray"];
      }
       return self;
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-22
      • 1970-01-01
      • 1970-01-01
      • 2020-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多