2012-03-26 7 views
0

NSDictionaryに基づいて "ビジネスオブジェクト"を作成したいとします。これは、実装が任意のキーでこのオブジェクトを拡張できるようにするためのもう1つの理由は、便利な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。 – Krumelur

+0

編集されました。 – Vignesh

+0

ありがとうございます。私も同様に私の質問を更新しました:) – Krumelur

関連する問題