2013-03-19 97 views
1

安装程序 - 使用RestKit,以及将数据存储在CoreData存储中的功能。restkit - 遇到映射关系......或其他问题

我试图执行两个独立的GET操作:

问题/:issueId ==>这将返回一个发行对象,假设一个具有该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 

问题有意见的集合。评论不知道他们拥有的问题。

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

例如,在我们的URL中,说“issueId”是12345.因此,如果我打电话给http://example.com/issue/12345,我想要将数据写入我的CoreData存储。 (这很好,顺便说一句)。接下来我想要调用“http://example.com/issue/12345/comments”,然后将这些注释写入CoreData存储,并将其连接到问题-12345,这已经在那里了。这是我遇到麻烦的部分。

如果有人可以提供这方面的指导,我会很感激。

回答

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及其倒数)为您服务。