objective-c – RestKit RKObjectMapping嵌套json

如何使用RestKit RKObjectMapping映射下面的嵌套json?我只需要映射“数据”.我当前的代码返回(null) – 谢谢!
{

    "sucess": true,"error": {
        "code": "","message": ""
    },"data": [
        {
            "id": 1,"name": "Salad","description": "Salad Desc","category_id": 1
        },{
            "id": 2,"name": "Soup","description": "Soup Desc",{
            "id": 3,"name": "Wrap","description": "Wrap Desc",{
            "id": 4,"name": "Appetizers","description": "Appetizers Desc","category_id": 1
        }
    ]

}

@interface Subcategory : NSObject    
    @property (nonatomic,retain) NSNumber *subcategoryID;
    @property (nonatomic,retain) NSNumber *categoryID;
    @property (nonatomic,retain) NSString *name;
    @property (nonatomic,retain) NSString *description;
    @property (nonatomic,retain) NSString *thumbnail;
    @property (nonatomic,retain) NSArray *data;

视图控制器

RKObjectMapping* mapping = [RKObjectMapping mappingForClass:[Subcategory class]];

RKObjectMapping* dataMapping = [RKObjectMapping mappingForClass:[Subcategory class]];
[dataMapping mapKeyPath:@"id" toAttribute:@"subcategoryID"];
[dataMapping mapKeyPath:@"category_id" toAttribute:@"categoryID"];
[dataMapping mapAttributes:@"name",@"description",nil];

[mapping mapKeyPath:@"data" toRelationship:@"data" withMapping:dataMapping];

[[RKObjectManager sharedManager] loadObjectsAtResourcePath:[NSString stringWith

解决方法

您缺少rootKeyPath并且还在提供程序中设置映射:
RKObjectMapping* mapping = [RKObjectMapping mappingForClass:[Subcategory class]];    
RKObjectMapping* dataMapping = [RKObjectMapping mappingForClass:[Subcategory class]];
[dataMapping mapKeyPath:@"id" toAttribute:@"subcategoryID"];
[dataMapping mapKeyPath:@"category_id" toAttribute:@"categoryID"];
[dataMapping mapAttributes:@"name",nil];
dataMapping.rootKeyPath = @"data"; //this is what you were missing    
//get your  mapping provider (i'm not sure if you already have on declared)
[mappingProvider setObjectMapping:dataMapping forResourcePathPattern:@"/somepath/toservice/"];
[[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/somepath/toservice/"];

以下是有关获取其他元素的问题的更多信息(例如“错误”):

- (void)objectLoader:(RKObjectLoader *)objectLoader didFailWithError:(NSError *)error {
    NSError *parseError = nil;
    id response = [objectLoader.response parsedBody:&parseError];
    DLog(@"response %@",response);    
    if (!parseError) {
        NSString *errorMessage = [[response valueForKey:@"error"] valueForKey:@"message"];     
        //do something with it    
    }
}

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...