【问题标题】:iOS: Saving NSMutableArray in NSUserDefaults give me an error : 'Attempt to insert non-property list object'?iOS:在 NSUserDefaults 中保存 NSMutableArray 给我一个错误:“尝试插入非属性列表对象”?
【发布时间】:2015-03-24 16:24:07
【问题描述】:

我想知道如何将 NSMutableArray 保存在 NSUserDefaults 中?我不断收到以下错误。

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Attempt to insert non-property list object (
    "<Data: 0x7a1bf830>",
) for key dataList'

这是我的代码

   NSUserDefaults *myDefaults = [[NSUserDefaults alloc]
                                initWithSuiteName:@"group.sharingData"];
  [myDefaults setObject:self.dataList forKey:@"dataList"];
  [myDefaults synchronize];

【问题讨论】:

标签: ios objective-c swift compiler-errors


【解决方案1】:

问题在于self.dataList 包含Data 类型的对象(这是您实现的自定义类)。

您需要切换到NSData 或将Data 对象转换为属性列表对象。

【讨论】:

  • 或者让你的对象NSCoding兼容使用NSKeyedArchiver来满足序列化/反序列化需求
  • @JustSid 使对象符合NSCoding 不足以将它们放入NSUserDefaults。您还必须手动转换为NSData
  • 我没有提到NSKeyedArchiver 用于序列化/反序列化需求吗?
猜你喜欢
  • 1970-01-01
  • 2014-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-09
  • 2011-07-17
相关资源
最近更新 更多