RestKit 直接 + 反向关系映射
Posted
技术标签:
【中文标题】RestKit 直接 + 反向关系映射【英文标题】:RestKit direct + inverse relationship mapping 【发布时间】: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 文档和许多 ***.com 类似的线程,但我仍然不明白如何设置 完整 CoreData 模型关系映射,前提是我需要同时拥有这两种关系在我的代码中可用(即,我需要从孩子显式访问父亲,从主实体访问孩子)。
我们将不胜感激。
提前非常感谢!
【问题讨论】:
【参考方案1】:我自己解决了我的映射理解问题,我想分享一下以防万一:RestKit 模型映射并不是要以“绝对”术语在模型上定义,而是“相对”到模型上的 RESTful 操作。
换句话说,一个模型实体可以有多个 RestKit 映射,每个映射对应于该实体在 GET/POST/PATCH/etc 中的引用方式。操作。
我希望这可以帮助其他人更好地理解RestKit漂亮的框架!
【讨论】:
你好,我和你有同样的问题,但我不太明白你的回答。你能分享一下你用来实现反向关系映射的代码吗?以上是关于RestKit 直接 + 反向关系映射的主要内容,如果未能解决你的问题,请参考以下文章