2012-03-26 57 views
0

我想创建一个基于NSDictionary的“业务对象”。原因是我希望实现能够使用任意键扩展这个对象,另一个原因是我使用便捷的plist格式(存储的对象是整数,浮点数或字符串)来保存它。创建NSDictionary支持的对象

业务对象包含许多预定义的属性,例如,

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

回答

0

“最小阻力的路径” 原来是使用NSCoding代替。

2

您应该让您的班级KVC投诉。 KVC做到了这一点。 Look here.Ex,

// assume inputValues contains values we want to 
// set on the person 

NSDictionary * inputValues; 
YOURCLASS * person = [[YOURCLASS alloc] init]; 

[person setValuesForKeysWithDictionary: inputValues]; 
+0

好点!我的课程具有基本的KVC合规性(不验证等)。但是,我怎么从那里到 - 从一个plist?我想这是我的问题的核心。编辑:我想*从* plist更难,但我不需要这种情况。 – Krumelur 2012-03-26 07:10:12

+0

@Krumelur。编辑。 – Vignesh 2012-03-26 07:15:57

+0

谢谢。我更新了我的问题:) – Krumelur 2012-03-26 19:11:26