向RestKit映射添加一对一外键连接的问题
我试图添加一个连接到RestKit映射,但没有成功。
我的JSON如下所示:
{ parent: { token: "token" title: "title", description: "description", child_id: 1 } }
我的CoreDatascheme定义Parent
ManagedObject在child
项下有一个Child
关系(和相反)。 在CoreData中已经有一个相应的Child
对象之后, Parent
映射发生了,所以这不是问题。
为了解决这个问题,我在networking上跟踪了一些链接和讨论,但都没有成功。 什么是正确的方法做到这一点,而不必添加一个child_id
属性Parent
(有人声称他们这样做,但它看起来不对我)。
假设我有这个映射:
- (RKEntityMapping *)parentResponseMapping { RKEntityMapping *mapping = [RKEntityMapping mappingForEntityForName:@"Parent" inManagedObjectStore:[self myStore]]; [mapping addAttributeMappingsFromArray:@[@"title", @"description"]]; mapping.identificationAttributes = @[@"token"]; return mapping; }
起初我尝试添加像这样的连接:
NSEntityDescription *parentEntity = [NSEntityDescription entityForName:@"Parent" inManagedObjectContext:[self myContext]]; NSRelationshipDescription *childRelationship = [parentEntity relationshipsByName][@"seller"]; RKConnectionDescription *connection = [[RKConnectionDescription alloc] initWithRelationship:childRelationship keyPath:@"child_id"]; [mapping addConnection:connection];
但是,我得到一个错误, child_id
不是一个有效的属性(这是我尝试添加child_id
属性到我的计划,但又一次,这似乎凌乱,而且,它不工作)。
我也尝试通过添加连接:
[addConnectionForRelationship:@"child" connectedBy:@"child_id"]
但是这也不起作用。
无论如何,这两种方法都会忽略子映射。
什么是正确的方法来实现这一目标?
编辑 : RestKit对象与外键映射关系 – 这已经在这里回答,但解决scheme看起来很奇怪。 这是唯一的方法来做到这一点?
而不必为parent添加一个child_id属性(有些人声称他们做了这个,但是对我来说看起来是错误的)。
这实际上是正确的做法…
重点是RestKit需要一些方法将两个项目映射在一起,一些关键用于search和查找要连接的项目。 这个信息只需要是暂时的(假设你一次加载数据或者识别的另一侧是持久属性)。 没有其他办法可以做到。