我想创建一个基于NSDictionary
的"业务对象"。原因是我希望实现能够用任意键扩展这个对象,另一个原因是我使用方便的plist格式(存储的对象是整数、浮点或字符串)来持久化它。
业务对象包含许多预定义的属性,例如
@property NSString* customerName;
@property NSString* productCode;
@property int count;
@property double unitPrice;
我想将其序列化,例如到属性列表(这不是一个严格的要求,它可以是其他易于使用的格式)。最好,类的实现应该只是
@synthesize customerName, productCode, count, unitPrice:
对于上面的例子。要使用这个类,我想做一些类似的事情:
MyBusinessObject* obj = [MyBusinessObject businessObjectWithContentsOfFile:fileName];
obj.productCode = @"Example";
[obj setObject:@"Some data" forKey:@"AnExtendedProperty"];
[obj writeToFile:fileName atomically:YES];
您应该向您的类KVC投诉。KVC有魔力。看这里。Ex,
// assume inputValues contains values we want to
// set on the person
NSDictionary * inputValues;
YOURCLASS * person = [[YOURCLASS alloc] init];
[person setValuesForKeysWithDictionary: inputValues];
"最小阻力路径"原来是使用NSCoding
。