0

文字列のディクショナリをJSONフェッチからKVC準拠のNSManagedObjectにマップしようとしていますが、正常に使用できますsetValue: forKey:が、タイプをマップする方法がわかりません。

たとえば、日付をランダムな文字列に設定することはできませんが、Printing description of myDate: asdfsadf 機能しました。

私はいくつかの有用な答えを提供したhttps://stackoverflow.com/a/5345023/828859を見ました。私は入ってすべてのプロパティの検証を作成できます...しかし、すべての日付を検証し、日付があるたびに個別に出力値を設定する必要があるため、それはあまり乾燥していないようです。

使用する前にタイプごとに変更したいsetValue: forKey:のですが、プロパティタイプを区別する方法がわかりません。

私がやりたいこと:

switch([object typeforkey:key]){
   case @"NSDate":
   //...
   value = mutatedDate
   //...
}
[object setValue:value forKey:key];
4

2 に答える 2

0

プロパティタイプのマッピングに別の辞書を使用することになりました。次に、オブジェクトマッピングオブジェクトは、マップされるオブジェクトをチェックして、この特定のプロトコルに従い、プロパティタイプディクショナリを使用して、を使用する前に各プロパティを変換しsetValue:forKey:ます。

于 2012-07-14T11:13:01.550 に答える
0

インスタンス化されたクラスの種類をオブジェクトに尋ねることができます。したがって、次のようなことができます。

id myObject = [myDictionary objectForKey:key];

if ([myObject isKindOfClass:[NSDate class]]) {
    // Do stuff
}
else if ([myObject isKindOfClass:[NSString class]]) {
    // Do other stuff
}

isaこれは、オブジェクトがタイプのオブジェクトを指すivar名を持つポインターを含む構造体であるためClass、オブジェクトがどの種類のクラスに由来するかをいつでもオブジェクトに尋ねることができるためです。

于 2012-06-18T06:40:37.550 に答える