Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 创建字典支持的对象_Iphone_Objective C_Dictionary_Nsdictionary - Fatal编程技术网

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];