Json Restkit映射-没有响应描述符与加载的响应匹配

Json Restkit映射-没有响应描述符与加载的响应匹配,json,ios7,restkit,kvc,Json,Ios7,Restkit,Kvc,我是RestKit和Objective C的新手。我正在尝试使用RestKit从Web服务检索数据。我已经完成了映射,但是我得到了一个错误,它无法找到与响应匹配的结果。我使用不带KVC的映射,因为JSON格式没有键 下面是映射实现 +(RKObjectMapping *)venueMapping { RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[venue class]]; NSDictionary

我是RestKit和Objective C的新手。我正在尝试使用RestKit从Web服务检索数据。我已经完成了映射,但是我得到了一个错误,它无法找到与响应匹配的结果。我使用不带KVC的映射,因为JSON格式没有键

下面是映射实现

+(RKObjectMapping *)venueMapping {
     RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[venue class]];
     NSDictionary *mappingDictionary = @{@"name":@"name"};
    [mapping addAttributeMappingsFromDictionary:mappingDictionary];

    return mapping;
 } 
我尝试只使用一个值来查看是否有匹配的值。下面是响应描述符

-(void) loadVenue:(void (^)(venue *))success failure:(void (^)(RKObjectRequestOperation *, NSError *))failure{

     RKLogConfigureByName("RestKit/ObjectMapping", RKLogLevelTrace);
     [self getObjectsAtPath:@"venue" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult){

    if(success){
        venue *venues = (venue *)[mappingResult.array firstObject];
        success(venues);
    }

    }failure:^(RKObjectRequestOperation *operation, NSError *error){
        if(failure){
           failure(operation,error);
    }
}];

}

- (void) setupResponseDescriptors {
[super setupResponseDescriptiors];

RKResponseDescriptor *authenticatedUserResponseDescriptors = [RKResponseDescriptor responseDescriptorWithMapping:[MappingProvider venueMapping] method:RKRequestMethodGET pathPattern:@"venue" keyPath:@"" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[self addResponseDescriptor:authenticatedUserResponseDescriptors];
}
我一直在阅读文档并尝试各种方法,但我仍然没有解决这个问题的方法。有人知道吗

附件是一个JSON返回示例

 (
    {
    coverType = "<null>";
    description = "";
    name = "McDonald";
    priv = 1;
    rates = ();
    },
    {
    coverType = "<null>";
    description = "";
    name = "My House";
    priv = 1;
    rates =();
    },
 )
添加TraceLog

2014-04-22 21:45:55.636 App_Test[420:60b] I restkit:RKLog.m:34 RestKit logging initialized...
2014-04-22 21:45:56.064 App_Test[420:60b] I restkit.network:RKObjectRequestOperation.m:180 GET 'http://api.kontakt.io/venue'
2014-04-22 21:46:46.327 App_Test[420:f03] D restkit.object_mapping:RKMapperOperation.m:377 Executing mapping operation for representation: (
        {
        beacons =         (
        );
        beaconsCount = 0;
        coverType = "<null>";
        description = "";
        id = "212321";
        lat = "<null>";
        lng = "<null>";
        managers =         (
        );
        name = McDonald;
        priv = 1;
        rates =         (
        );
        users =         (
        );
    }
)
 and targetObject: (null)
2014-04-22 21:46:46.328 App_Test[420:f03] D restkit.object_mapping:RKMapperOperation.m:403 Finished performing object mapping. Results: (null)
2014-04-22 21:46:46.328 App_Test[420:570b] E restkit.network:RKObjectRequestOperation.m:243 GET 'http://api.kontakt.io/venue' (200 OK / 0 objects) [request=0.9645s mapping=0.0000s total=50.3422s]: Error Domain=org.restkit.RestKit.ErrorDomain Code=1001 "No response descriptors match the response loaded." UserInfo=0x9556ab0 {NSErrorFailingURLStringKey=http://api.kontakt.io/venue, NSLocalizedFailureReason=A 200 response was loaded from the URL 'http://api.kontakt.io/venue', which failed to match all (0) response descriptors:, NSLocalizedDescription=No response descriptors match the response loaded., keyPath=null, NSErrorFailingURLKey=http://api.kontakt.io/venue, NSUnderlyingError=0x9557c30 "No mappable object representations were found at the key paths searched."}

您正在尝试在path venue获取对象,但没有任何迹象表明您的JSON中有一个venue对象。

您正在尝试在path venue获取对象,但没有任何迹象表明您的JSON中有一个venue对象。

错误消息显示:

无法匹配所有0个响应描述符


这表明由于消息中的0,没有调用setupResponseDescriptors方法,因此没有向对象管理器添加响应描述符。

错误消息显示:

无法匹配所有0个响应描述符


这表示由于消息中的0,未调用setupResponseDescriptors方法,因此未向对象管理器添加响应描述符。

如果未使用CoreData,请确保在POD文件中定义Restkit,如下所示

pod“RestKit/Network”,“~>0.23” pod“RestKit/ObjectMapping”,“~>0.23”

如果您没有使用CoreData,请确保在POD文件中定义了Restkit,如下所示

pod“RestKit/Network”,“~>0.23” pod“RestKit/ObjectMapping”,“~>0.23”

不确定我是否正确阅读了这篇文章,但根据文档,许多web API返回的JSON没有任何可用于映射选择的嵌套属性。在这些情况下,您仍然可以使用RestKit,只需依赖URL匹配即可。这就是我使用文档中提到的路径模式的原因。我不确定我是否正确阅读了这篇文章,但根据文档,许多web API返回JSON时没有任何可用于映射选择的嵌套属性。在这些情况下,您仍然可以使用RestKit,只需依赖URL匹配即可。这就是我使用docsI中提到的路径模式的原因。我试图将整个映射放在代码中,以防由于数据不足而无法正确映射。但它似乎仍然不起作用。但是,我在调试期间发现了这个错误,NSUnderlyingError:Summary字符串解析错误。这是否意味着我的映射声明存在一些问题?进一步调试后,baseURL似乎不匹配。不太清楚发生了什么。将尝试进一步调试能否为响应添加跟踪日志输出?并将响应描述符密钥路径更改为nil。@Wain我添加了tracelog输出,还将响应描述符密钥路径更改为nil。仍然没有接近解决方案基于该日志,似乎从未调用setupResponseDescriptors…我尝试将整个映射放入代码中,以防由于数据不足而无法正确映射。但它似乎仍然不起作用。但是,我在调试期间发现了这个错误,NSUnderlyingError:Summary字符串解析错误。这是否意味着我的映射声明存在一些问题?进一步调试后,baseURL似乎不匹配。不太清楚发生了什么。将尝试进一步调试能否为响应添加跟踪日志输出?并将响应描述符密钥路径更改为nil。@Wain我添加了tracelog输出,还将响应描述符密钥路径更改为nil。仍然没有接近解决方案基于该日志,似乎从未调用setupResponseDescriptors…谢谢@Wain!我认为可能是映射定义错误或其他原因,但显然由于命名不匹配,objectManager中没有调用它。我真傻。谢谢你@Wain!我认为可能是映射定义错误或其他原因,但显然由于命名不匹配,objectManager中没有调用它。我真傻。