Restkit:将请求中的字段包含到对象映射中

Posted

技术标签:

【中文标题】Restkit:将请求中的字段包含到对象映射中【英文标题】:Restkit: including field from request into object mapping 【发布时间】:2015-06-12 13:56:08 【问题描述】:

我正在打电话休息

GET /entities?parent=123
[
    id:1, name:"name 1",
    id:2, name:"name 2"
]

我的实体定义有以下字段

id
name
parent

问题是响应中没有父字段,它在请求中。如何将请求中的父字段保存到 coredata?

我试图搜索这些东西,但没有成功。

我尝试寻找一些可以在 restkit 处理之前转换响应的转换器,但找不到任何东西。 我在 RKObjectRequestOperation 中看到了元数据映射,但不知道是否/如何使用它。

谢谢

编辑

下面提供的答案仅在与对象管理器一起使用时才有效。所以以下工作

RKDynamicMapping *learningObjectMapping = [MTAbstractLearningObject map];//this contains metadata mapping for @metadata.routing.parameters.entityId
RKResponseDescriptor* learningObjRd = [RKResponseDescriptor responseDescriptorWithMapping:learningObjectMapping 
    method:RKRequestMethodGET pathPattern:@"entity/:entityId" keyPath:@"objects" 
    statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[self.objectManager addResponseDescriptor:learningObjRd];
[self.objectManager.router.routeSet addRoute:[RKRoute routeWithName:@"learningObjects" pathPattern:@"entity/:id" method:RKRequestMethodGET]];

如果对象管理器如上所示构造,请求如下所示。

[self.objectManager getObjectsAtPathForRouteNamed:@"learningObjects" object:entity parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) 
    NSLog(@"API: Success got learning objects");
failure:^(RKObjectRequestOperation *operation, NSError *error) 
    NSLog(@"API: Failed to get learning objects");
];

然后就可以了。

【问题讨论】:

【参考方案1】:

您可以使用元数据,它包含您可以访问的查询参数字典。您的映射将包含

@"@metadata.query.parameters.parent": @"parent"

【讨论】:

你的意思是我可以在 RKEntityMapping 中使用它?还有一件事。在我的情况下,参数不在查询字符串中,而是像 /entites/parent/123 这样的 url 的一部分 我正在寻找有关此的概念。从这个答案中得到了很好的指导,可以进一步探索。试图找到有关元数据映射的文档。得到cocoadocs.org/docsets/RestKit/0.24.1/Classes/… 谢谢你的回答。 如果您使用的是路径组件,那么您应该查看RKRoute 让我深入研究一下。然后我会更新答案并接受它。谢谢

以上是关于Restkit:将请求中的字段包含到对象映射中的主要内容,如果未能解决你的问题,请参考以下文章

RestKit 将包含 lat & lng 的数组映射到 CoreData

Restkit 无法为 keyPath 添加映射

Restkit 请求动态映射

Restkit 将对象映射到 NSArray

在其 HTTP 正文中嵌套 JSON 的 RestKit 对象映射请求

RestKit - 没有对象映射的请求