2

RESTkit 0.20.0-pre6 を使用して Core Data 関係の適切なマッピングを取得するのに苦労しています。

この JSON をマップしたい:

{ "items" : [ {"id" : 2001, "itemAttr1" : "..."}, ...<more items>... ],
  "rooms":  [ {"id" : 3001, "items": [2001, ...<more item id's>...] }

対応する Core Data モデルに:

Entity ItemMO (Attributes "id", "itemAttr1", Relationship "room" to RoomMO)
Entity RoomMO (Attributes "id", Relationship "items" to ItemMO)

属性は適切にマッピングされていますが、関係は空です。

このコードを使用して、ここRKConnectionDescriptionで説明されているように使用してみました:

NSEntityDescription *roomEntity = [NSEntityDescription entityForName:@"RoomMO" inManagedObjectContext:self.context];
NSRelationshipDescription *itemsInRoom = [roomEntity relationshipsByName][@"items"];
RKConnectionDescription *connection = [[RKConnectionDescription alloc] initWithRelationship:devicesInRoom keyPath:@"devices"];
[roomMapping addConnection:connection];

私はまた、単純なRKRelationshipMappingものから無駄なものを使ってみました:

[itemMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:nil toKeyPath:@"room" withMapping:roomMapping]];

これはRESTkitのエキゾチックなケースではないはずなので、単純なものが欠けているに違いありません。何か案は?

4

1 に答える 1

6

私はそれを動かしました。秘訣は、外部キーのItemMOに追加の属性「roomId」を追加することでした。

Entity ItemMO (Attributes "id", "roomId", "itemAttr1", Relationship "room" to RoomMO)

次に、RESTkitに関係について伝えます。

[itemMapping addConnectionForRelationship:@"room" connectedBy:@{@"roomId" : @"id"}];

RESTkitは、追加の外部キー属性がないと関係を確立できないようです。

于 2013-01-18T22:42:07.667 に答える