0

我正在尝试添加到 RestKit 映射的连接,但没有成功。

我的 JSON 如下:

{
  parent: {
    token: "token"
    title: "title",
    description: "description",
    child_id: 1
  }
}

我的 CoreData 方案定义了 ManagedObject在键下Parent有一个Child关系child(反之亦然)。映射发生在Parent我已经Child在 CoreData 中拥有相应的对象之后,所以这不是问题。

为了解决这个问题,我在网络上关注了一些链接和讨论,但没有任何工作。这样做的正确方法是什么,而不必添加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 对象与外键的映射关系- 这已经在这里得到了回答,但解决方案对我来说看起来很奇怪。这是唯一的方法吗?

4

1 回答 1

1

无需向 Parent 添加 child_id 属性(有些人声称他们这样做了,但在我看来这是错误的)。

这实际上是正确的方法......

关键是 RestKit 需要某种方式将这两个项目映射在一起,一些键用于搜索和查找要连接的项目。此信息只需要是暂时的(假设您一次性加载数据或标识的另一侧是持久属性)。真的没有其他方法可以做到这一点。

于 2013-05-20T19:27:22.790 回答