hen*_*g77 2 core-data ios restkit
我正在努力使用RESTkit 0.20.0-pre6获得核心数据关系的正确映射.
我想映射这个JSON:
{ "items" : [ {"id" : 2001, "itemAttr1" : "..."}, ...<more items>... ],
"rooms": [ {"id" : 3001, "items": [2001, ...<more item id's>...] }
Run Code Online (Sandbox Code Playgroud)
到相应的核心数据模型:
Entity ItemMO (Attributes "id", "itemAttr1", Relationship "room" to RoomMO)
Entity RoomMO (Attributes "id", Relationship "items" to ItemMO)
Run Code Online (Sandbox Code Playgroud)
属性映射正常,但关系为空.
我尝试使用此处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];
Run Code Online (Sandbox Code Playgroud)
我也尝试使用简单RKRelationshipMapping无济于事:
[itemMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:nil toKeyPath:@"room" withMapping:roomMapping]];
Run Code Online (Sandbox Code Playgroud)
我必须遗漏一些简单的东西,因为这不应该是RESTkit的一个奇特的案例.有任何想法吗?
我搞定了.诀窍是在ItemMO上为外键添加额外的属性'roomId'.
Entity ItemMO (Attributes "id", "roomId", "itemAttr1", Relationship "room" to RoomMO)
Run Code Online (Sandbox Code Playgroud)
然后告诉RESTkit关于这种关系:
[itemMapping addConnectionForRelationship:@"room" connectedBy:@{@"roomId" : @"id"}];
Run Code Online (Sandbox Code Playgroud)
似乎RESTkit无法在没有额外外键属性的情况下建立关系.
| 归档时间: |
|
| 查看次数: |
2119 次 |
| 最近记录: |