【发布时间】:2014-08-26 09:38:12
【问题描述】:
作为一名新手 RestKit 用户,我对 CoreData 关系映射的概念理解存在问题。
假设我们有一个 CoreData 模型,其中只有两个处于主/从关系中的实体:
@interface Master : NSManagedObject
@property (nonatomic, retain) NSString *objectId;
@property (nonatomic, retain) NSString *display;
@property (nonatomic, retain) NSSet *childrens;
@end
@interface Children : NSManagedObject
@property (nonatomic, retain) NSString *objectId;
@property (nonatomic, retain) NSString *display;
@property (nonatomic, retain) Master *father;
@end
这个模型的 RestKit 映射是:
RKEntityMapping *masterMapping = ...
RKEntityMapping *childrenMapping = ...
... property mappings ...
masterMapping.identificationAttributes = @[ @"objectId" ];
childrenMapping.identificationAttributes = @[ @"objectId" ];
[masterMapping addPropertyMapping:[RKRelationshipMapping
relationshipMappingFromKeyPath:@"childrens" toKeyPath:@"childrens"
withMapping:childrensMapping]];
[childrenMapping addPropertyMapping:[RKRelationshipMapping
relationshipMappingFromKeyPath:@"father" toKeyPath:@"father"
withMapping:masterMapping]];
这是 http get 响应的建模方式(我可以更改它):
{
objectId: "3",
display: "a master object",
childrens: [
{
objectId: "1",
display: "a child object",
father: { objectId: "3" }
},
{
objectId: "2",
display: "another child object",
father: { objectId: "3" }
}
]
}
问题是之前的映射定义在将它与某个 RKResponseDescriptor 关联时会导致来自 RestKit 的循环映射错误。
我已阅读 RestKit 文档和许多 stackoverflow.com 类似的线程,但我仍然不明白如何设置 完整 CoreData 模型关系映射,前提是我需要同时拥有这两种关系在我的代码中可用(即,我需要从孩子显式访问父亲,从主实体访问孩子)。
我们将不胜感激。
提前非常感谢!
【问题讨论】: