4

次の JSON が与えられます。

{
   "someKey":"someValue",
   "otherKey":"otherValue",
   "features":[
      "feature1",
      "feature2",
      "feature3"
   ]
}

この JSONをandを使用してNSManagedObjectsにマッピングしています(この例では、2 つのエンティティ マッピングがあります。1 つは最上位オブジェクト用で、もう 1 つはフィーチャ クラス用です)。RKMapperOperationRKEntityMapping

最上位のオブジェクト マッピングは簡単です。2 つの属性マッピングに加えて、Feature との関係に対する 1 つの関係 (機能) です。

私の質問は、フィーチャの JSON 配列をフィーチャ オブジェクトの配列にマップする方法です。Feature クラスにはname、「feature1」、「feature2」などを保存するプロパティが 1 つだけあり、さらに親オブジェクト (トップ レベルのもの) への参照があります。このようなもの:

@interface Feature : NSManagedObject

//In the implementation file both properties are declared with @dynamic.
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) MyTopLevelObject *myTopLevelObject;

@end

何か案が?

4

3 に答える 3

7

Restkit 0.20+ を使用している場合は、エンティティの文字列配列を表すプロパティを Transformable に設定するだけです。

たとえば、この場合、Feature エンティティには 3 つのプロパティがあります。

someKey - String
otherKey - String
features - Transformable

Restkit は、「機能」を文字列配列として自動的にマップします。

したがって、一度マッピングすると、機能配列内の文字列の 1 つにアクセスするのは次のように簡単になります。

[Feature.features objectAtIndex:?]

試してみたところ、完璧に機能します。

于 2014-01-20T21:52:03.893 に答える
1

そのような文字列の配列を ManagedObject にマップできるとは思いません。ただし、Feature にはnameプロパティが 1 つしかないため、それを配列として に格納することができますMyTopLevelObject。type を使用してデータモデルにfeaturesプロパティを追加することで、これを行うことができます。RestKit は、NSStrings を使用して NSArray の機能を自動的に解析します。その後、次のように機能を取得できます。MyTopLevelObjectTransformable

MyTopLevelObject *topLevelObject = ... // get the object from the persistent store
NSArray *features = (NSArray*)topLevelObject.features; // this will contain the features as NSString objects
于 2013-06-19T10:06:29.330 に答える