NSUserDefaults encodeWithCoder无法识别的选择器发送到实例

时间:2017-01-03 06:48:17

标签: ios objective-c nsuserdefaults nskeyedarchiver

我想将NSMutableDictionary保存到NSUserDefaults,然后收到错误:

  

NSUserDefaults encodeWithCoder无法识别的选择器发送到实例。   致命异常:NSInvalidArgumentException [NSUserDefaults encodeWithCoder:]:无法识别的选择器发送到实例0x17544a080

这是我的代码:

NSUserDefaults *shared2 = [[NSUserDefaults alloc]initWithSuiteName:@"AppGroupName"];
NSMutableData *data1 = [[NSMutableData alloc]init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData:data1];
[archiver encodeObject:shareDic forKey: @"shareDic"];
[archiver finishEncoding];

if (data1 !=nil)
{
    [shared2 setObject:data1 forKey:@"dicFitnessData"];
}

1 个答案:

答案 0 :(得分:0)

您需要实施nscoding协议。

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

    - (id)initWithCoder:(NSCoder *)aDecoder{
       if(self = [super init]){
         self.yourpoperty = [aDecoder decodeObjectForKey:@"Your_KEY"];
        }
        return self;
      }