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

iOS如何保存类对象的字典?,ios,class,core-data,nsuserdefaults,nsmutabledictionary,Ios,Class,Core Data,Nsuserdefaults,Nsmutabledictionary,到目前为止,我一直在使用NSUserDefaults保存我的NSMutableDictionaries,但现在我想保存一个类似这样的字典:它将保存不同的Car对象和钥匙:汽车模型。Car类将有一个关于其基本特征的字典和一个关于Person对象(使用汽车的人)的字典。每个人类都将个人信息作为属性。我可以做其他任何事情,但不能保存第一个NSMutableDictionary,它将保存所有信息。(字典必须只包含非属性值错误)什么是保存它的合适方法?您可以使用NSKeyedArchiver保存对象,并使

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

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

您必须使用类似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"];
  ....
}
您可以在这里找到代码示例: