映射 RestKit 后响应

Posted

技术标签:

【中文标题】映射 RestKit 后响应【英文标题】:Mapping RestKit Post Response 【发布时间】:2012-04-05 22:47:20 【问题描述】:

我正在使用 RestKit 发布到 uri

    NSString* path = [NSString stringWithFormat:@"myPathHere"];
    NSDictionary *params = [NSDictionary dictionaryWithKeysAndObjects:@"rating",[rating stringValue], nil];
   [[RKObjectManager sharedManager].client post:path params:params delegate:self];

服务器将响应我的 managedObject“项目”的更新版本。

我该如何映射这个项目。我是否使用以下委托方法?

- (void)request:(RKRequest *)request didLoadResponse:(RKResponse *)response

我知道从这里我可以获取响应 JSON 值,但是如何将其更改为映射对象?

非常感谢任何帮助。

谢谢!

【问题讨论】:

【参考方案1】:

当我需要映射我的服务器对象时,我会发出这样的请求:

        [[RKObjectManager sharedManager] 
         loadObjectsAtResourcePath:[qualifiedResourceURL
                                    appendQueryParams:params] 
         delegate:self  
         ];

然后对象在这个方法中返回:

    - (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects 

然后我使用通知管理器发布更新的对象

        [[NSNotificationCenter defaultCenter] postNotificationName:GotFotosInRegion_Fotos_Array_Response object:objects];

最好的文档在https://github.com/RestKit/RestKit/blob/master/Docs/Object%20Mapping.md

【讨论】:

这在我使用 GET 但我使用 POST 时有效。如果您查看 applyQueryParams 方法,它所做的就是获取您传入的字典并使用“?”将其附加到路径中。在中间。 你能把你的 RKObjectRouter 设置为 POST。像这样: router = [RKObjectRouter new] ; [router routeClass:[CheckStatus class] toResourcePath:@"/registration/rest/users/checkstatus" forMethod:RKRequestMethodPOST]; 我已经尝试过了,但它似乎不起作用。我觉得我越来越近了。以下 (在下一条评论中) 将导致 objectloader didloadobjects 被调用但对象数组为空。 NSString* path = [NSString stringWithFormat:@"/PATH/HERE",theItem.entityId, theItem.identifier]; RKObjectManager*objectManager = [RKObjectManager sharedManager]; RKObjectLoader* objectLoader = [objectManager objectLoaderWithResourcePath:path delegate:self]; objectLoader.method = RKRequestMethodPOST; objectLoader.params = [NSDictionary dictionaryWithKeysAndObjects:@"rating",[rating stringValue], nil]; objectLoader.targetObject = self; objectLoader.objectMapping = [ObjectMappings mappingForMenu]; [objectLoader send]; 这会稍微让你绊倒。您是否使用了代理? Charles Proxy 在我安装它的那天为我节省了几个小时。

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

RestKit映射成功后如何访问对象

使用 RestKit 映射时间

restkit 映射嵌套数组为空(带有 json 响应的嵌套 restkit 请求)

RestKit 响应未正确映射

RestKit 不喜欢为 POST 响应映射不同的对象

使用 RestKit 映射的 JSON Post 后 TableView 不刷新