如何告诉RestKit在使用sendObject时使用哪个映射

时间:2012-11-23 14:54:52

标签: restkit

我是RestKit的新手,所以这个问题可能很愚蠢:当使用[objectManager sendObject:...]时,如何告诉RestKit它应该使用哪个映射结果?更具体一点:我将GET和POST数据发送到服务器,然后服务器响应JSON编码消息:

{"purchaseresult":{"status":"ok","errormsg":""}}

我使用的Objective-C代码如下所示:

RKObjectMapping *purchaseResultMapping = [RKObjectMapping mappingForClass:[PurchaseResult class]];
[purchaseResultMapping mapKeyPathsToAttributes:@"status", @"status", @"errormsg", @"errorMessage",nil];
[objectManager.mappingProvider setMapping:purchaseResultMapping forKeyPath:@"purchaseresult"];
[[RKObjectManager sharedManager].mappingProvider setErrorMapping:purchaseResultMapping];

[objectManager sendObject:queryParams toResourcePath:@"/purchase/post" usingBlock:^(RKObjectLoader* loader) {
    loader.method = RKRequestMethodPOST;
    loader.resourcePath = @"/purchase/post";
    loader.params = queryParams;
    loader.objectMapping = purchaseResultMapping;
}];

这会返回一个RestKit错误:

restkit.network:RKObjectLoader.m:216映射期间遇到的错误:期望对象类型为'__NSDictionaryI'的对象映射,提供者为'PurchaseResult'返回了一个

我在这里做错了什么想法?

由于       基督教

1 个答案:

答案 0 :(得分:1)

您发送的对象是NSDictionary,因此RestKit正在寻找NSDictionary的对象映射,但您提供的是PurchaseResult映射。如果发送PurchaseResult的实例或提供NSDictionary类的映射,则应避免此错误。

另一种选择如下:

[[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/purchase/post" usingBlock:^(RKObjectLoader *loader) {
  loader.delegate = **Your loader delegate here**;
  loader.method = RKRequestMethodPOST;
  loader.params = queryParams;
}];

确保你已经为回来的物品定义了你的地图,你应该很好。