iOS 如何保存类对象的字典?

Posted

技术标签:

【中文标题】iOS 如何保存类对象的字典?【英文标题】:iOS How to save a dictionary of class objects? 【发布时间】:2013-07-09 10:34:51 【问题描述】:

到目前为止,我一直在使用NSUserDefaults 来保存我的NSMutableDictionaries,但现在我想保存一个如下所示的字典:它将保存带有键的不同Car 对象:模型的车。 Car 类将有一个包含其基本特征的字典和一个包含Person 对象(谁使用汽车)的字典。每个Person 类都将个人信息作为属性。我可以做其他所有事情,但不能保存第一个 NSMutableDictionary,它将保存所有这些信息。(字典必须只包含非属性值错误)什么是保存它的合适方法?

【问题讨论】:

【参考方案1】:

您必须使用像 NSKeyedArchiver 这样的存档器来将您的对象序列化/反序列化为 NSData 存档。

图表中的所有对象

汽车 人 这些对象的所有属性都不是值对象 (即不是 NSString, NSDate, NSArray, NSNumber,...)

必须采用 NSCoding 协议。为此,您可以使用:

-(id)initWithCoder:(NSCoder *)coder

  // Tell the unarchiver how to read your object properties from the archive
  _oneObjectProperty = [coder decodeObjectForKey:@"propertyKey"];
  .....


-(void)encodeWithCoder:(NSCoder *)coder

  // Tell the archiver how to serialise your object properties
  [coder encodeObject:_oneObjectProperty ForKey:@"propertyKey"];
  ....

您可以在此处找到代码示例: Why NSUserDefaults failed to save NSMutableDictionary in iPhone SDK?

【讨论】:

【参考方案2】:

您可以使用NSKeyedArchiver 保存对象并使用NSKeyUnarchiver 检索它们。

【讨论】:

以上是关于iOS 如何保存类对象的字典?的主要内容,如果未能解决你的问题,请参考以下文章

IOS 数据存储(NSKeyedArchiver 归档篇)

iOS 基础04--Foundation框架下基本集合类

iOS 基础04--Foundation框架下基本集合类

如何将数据库值添加到包含类作为对象的字典中

如何将字典结果绑定到类对象c#linq

python中利用类创建的对象来保存信息