restkit - 无法映射关系...或其他东西

时间:2013-03-19 13:35:22

标签: ios core-data restkit

设置 - 使用RestKit,以及将数据存储在CoreData存储中的能力。

我正在尝试执行两个单独的GET操作:

问题/:issueId ==>这将返回一个Issue对象,假设存在具有该ID的对象。 问题/:issueId / comment ==>这将返回Comment对象,属于与issueId匹配的问题。

因此,对于第一次通话,这只是一个问题。如果我在URL上传入额外的参数,它只会返回注释。否则,它不会。当然,如果我确实要求它,那么创建对象就好了,所有对象都在我的核心数据存储中正确连接。

我正在映射的对象如下所示:

@interface Issue : NSManagedObject
@property (nonatomic) int32_t issueId;
@property (nonatomic, retain) NSSet* comments;
// many other fields not shown.
@end


@interface Comment: NSManagedObject 
@property (nonatomic) int32_t commentId;
// many other fields not shown.
@end

问题有一组评论。评论不知道他们自己的问题。

所以,我所要做的就是让这两个调用都成为可能。

例如,在我们的网址中,说“issueId”是12345.因此,如果我对http://example.com/issue/12345进行一次调用,我希望将数据写入我的CoreData商店。 (这很棒,顺便说一句)。我接下来要发生的是调用“http://example.com/issue/12345/comments”,然后将这些注释写入CoreData存储,并连接到issue-12345,已经存在。那是我遇到麻烦的部分。

如果有人可以就此提供指导,我真的很感激。

1 个答案:

答案 0 :(得分:0)

在正式回购中阅读this issue后,我会按照以下步骤进行操作。

在您的核心数据模型中添加反向关系Comment -> Issue,以便您的Comment界面看起来像

@interface Comment: NSManagedObject 
@property (nonatomic, retain) Issue * issue;
@property (nonatomic) int32_t commentId;
// many other fields not shown.
@end

并强制要求该关系。

现在你必须设置添加该关系的映射,例如

[issueMapping addRelationshipMappingWithSourceKeyPath:@"comments"
                                              mapping:[self commentMapping]];

如果我的理解是正确的,RestKit应该填充两个关系(一对多Issue -> Comment及其反转)。