我如何利用NSCoding将对象转换为NSDictionary?

我有一个实现NSCoding的Objective-C类。 我需要以NSDictionary的forms返回此类的实例的表示,其中键是属性名称,值是属性值。

如何在Objective-C中进行此转换?

创建一个NSCoder子类应该很简单,其encode:forKey:方法只是将thing s粘贴到字典中,然后您可以检索它。

 @implementation DriisDictCoder { NSMutableDictionary * encodedDict; } - (void)encodeDouble: (double)v forKey: (NSString *)k { [codedDict addObject:[NSNumber numberWithDouble:v] forKey:k]; } // etc. // Custom method - (NSDictionary *)dictForEncodedObject { return encodedDict; } @end 

然后创建一个编码器实例,并将encodeWithCoder:发送到字典中所需的对象。

NSObject有一个方法dictionaryWithValuesForKeys: . 从文档:

返回一个字典,其中包含给定数组中每个键标识的属性值。

还有一个对应的-setValuesForKeysWithDictionary:方法。

NSCoding实际上并没有在这里发挥作用。

安德烈·马德森说的话。 如果你想使用NSCoding,你将使用NSKeyedArchiver将对象编码为NSData对象,并将NSData放入字典中。 如果这是令人担忧的话,那将不是人类可读的。 干杯

编辑:重新阅读你的问题,这真的是安德鲁说的,因为你想要1:1表示键:字典中的值 – NSCoding方法会给你整个对象作为你的字典键的值。 所以,给安德鲁+1。