2012-03-26 76 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