1

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

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

issue/:issueId ==> 这将返回一个问题对象,假设存在具有该 ID 的对象。 issue/: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

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

所以,我要做的就是让这两个调用都存在。

例如,在我们的 URL 中,说“issueId”是 12345。所以,如果我调用http://example.com/issue/12345,我希望将数据写入我的 CoreData 存储。(这很好用,顺便说一句)。接下来我想调用“ http://example.com/issue/12345/comments ”,然后将这些评论写入CoreData 存储,并连接到已经存在的issue-12345。这就是我遇到麻烦的部分。

如果有人可以就此提供指导,我将不胜感激。

4

1 回答 1

0

在官方 repo 上阅读此问题后,我将按如下方式进行。

在您的核心数据模型中添加反向关系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和它的逆)。

于 2013-03-20T06:24:35.357 回答