特定实体的 RestKit 映射

Posted

技术标签:

【中文标题】特定实体的 RestKit 映射【英文标题】:RestKit mapping for specific entity 【发布时间】:2013-10-28 13:11:58 【问题描述】:

我已经使用了用于不同实体映射的通用 RKObjectManager,如下面的 cod,但是当我尝试为特定实体进行映射时无法进行,因为我有两个具有相同 keyPath 的实体,这是我怎么能想到的问题。

   // Search  mapping ...
RKEntityMapping *searchEntityMapping = [RKEntityMapping mappingForEntityForName:NSStringFromClass([ABB class]) inManagedObjectStore: aBBManager.managedObjectStore];

[searchInfoEntityMapping addAttributeMappingsFromDictionary:@
 @"count" : @"count",
 @"total_count" : @"totalCount",

 ];


 // Search Advanced  mapping ...
RKEntityMapping *searchAdvEntityMapping = [RKEntityMapping mappingForEntityForName:NSStringFromClass([ABB class]) inManagedObjectStore: aBBManager.managedObjectStore];

[searchAdvEntityMapping addAttributeMappingsFromDictionary:@
 @"count" : @"count",
 @"data" : @"dataCount",

 ];

// Search  Descriptor
RKResponseDescriptor *aBBResponseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:searchEntityMapping pathPattern:nil keyPath:@"locations" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];


 // Search Adv Descriptor
 RKResponseDescriptor *aBB2ResponseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:searchAdvEntityMapping pathPattern:nil keyPath:@"locations" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

【问题讨论】:

【参考方案1】:

您应该使用pathPattern 参数来允许RestKit 在您发出特定请求时知道使用哪个响应描述符(因为您应该在URL 中为不同的实体使用不同的路径)。

如果由于某种原因不能,您需要创建多个 RKObjectManager 实例,并为您提出的每个不同请求使用适当的实例。

【讨论】:

以上是关于特定实体的 RestKit 映射的主要内容,如果未能解决你的问题,请参考以下文章

RestKit 实体映射

RestKit - 实体映射属性转换

RestKit - 到同一实体的关系映射创建无限循环

Restkit/Core Data 关系映射,实体到相同类型的实体(父/子)

RestKit 对象映射 - 一个实体,两个映射

如何在restkit映射后和保存到实体之前清除旧实体?