Iphone 创建字典支持的对象
我想基于Iphone 创建字典支持的对象,iphone,objective-c,dictionary,nsdictionary,Iphone,Objective C,Dictionary,Nsdictionary,我想基于NSDictionary创建一个“业务对象”。原因是我希望实现能够用任意键扩展这个对象,另一个原因是我使用方便的plist格式(存储的对象是整数、浮点或字符串)持久化它 业务对象包含许多预定义的属性,例如 @property NSString* customerName; @property NSString* productCode; @property int count; @property double unitPrice; 我想将其序列化,例如,将其序列化到属性列表(这不是严
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发挥了神奇的作用。这里,比如
“阻力最小的路径”原来使用了
NSCoding
。好的观点!我的类具有基本的KVC遵从性(没有验证等)。但是,我如何从那里到——和从——一个普利斯特?我想这是我问题的核心。编辑:我想从plist开始比较难,但在这种情况下我不需要它。@Krumelur我不确定你对属性列表有多着迷,但通常要做的是实现NSCoding
。然后,您可以使用NSKeyedArchiver
以二进制plist格式获取对象的NSData
表示。什么是“KVC投诉”?;)@Tommy我想我要用NSCoding
的方式,创建一个基类。除了在我的原型中使用的属性列表之外,没有理由使用属性列表。把它作为答案,我会接受:)
// assume inputValues contains values we want to
// set on the person
NSDictionary * inputValues;
YOURCLASS * person = [[YOURCLASS alloc] init];
[person setValuesForKeysWithDictionary: inputValues];