我如何利用NSCoding将对象转换为NSDictionary?
我有一个实现NSCoding的Objective-C类。 我需要以NSDictionary的forms返回此类的实例的表示,其中键是属性名称,值是属性值。
如何在Objective-C中进行此转换?
创建一个NSCoder
子类应该很简单,其encode
方法只是将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。