RestKit如何在数组内映射数组

Posted

技术标签:

【中文标题】RestKit如何在数组内映射数组【英文标题】:RestKit how to map an array inside an array 【发布时间】:2016-01-21 05:21:03 【问题描述】:

回复如下:


  "status": true,
  "statuscode": 200,
  "result": [
    
      "name": "ABC",
      "date": "2015-01-30",
      "documents": [
        
          "id": 1,
          "name": "doc1",
          "status": "complete",
        ,
        
          "id": 2,
          "name": "doc2",
          "status": "complete",
        ,
        
          "id": 3,
          "name": "doc3",
          "status": "complete",
        
      ],
      "message": "Hello World",
      "status": 3
    
  ]

我想映射并仅获取数组键控“结果”中的所有“文档”,并且我不需要其他对象/映射的任何内容。我只需要文件。如何在响应描述符中完成/声明以自动将所有这些文档与我的托管对象匹配?

【问题讨论】:

你尝试了什么?什么不起作用? 【参考方案1】:

试试这个:-

NSDictionary *dic=@
                    @"status": @true,
                    @"statuscode":@ 200,
                    @"result": @[
                            @
                                @"name": @"ABC",
                                @"date": @"2015-01-30",
                                @"documents": @[
                                        @
                                            @"id":@ 1,
                                            @"name": @"doc1",
                                            @"status": @"complete",
                                            ,
                                        @
                                            @"id":@ 2,
                                            @"name": @"doc2",
                                            @"status":@ "complete",
                                            ,
                                        @
                                            @"id":@ 3,
                                            @"name": @"doc3",
                                            @"status": @"complete",
                                            
                                        ],
                                @"message": @"Hello World",
                                @"status":@ 3
                                
                            ]
                    ;

我将您的回复存储在 NSDictionary 并通过 -

 [[[dic objectForKey:@"result"] objectAtIndex:0] objectForKey:@"documents"]

根据需要更改您的 indexNumber !

【讨论】:

这个答案与restkit无关【参考方案2】:
NSDictionary *jsonData = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];  //From Server you will get response data in form of NSData , so the 'responseData' is a type of NSData
NSArray *appDetais = [jsonData objectForKey:@"result"];
NSDictionary *resultJsonData = [appDetais objectAtIndex:0];
NSArray *documentDetailsArray = [jsonData resultJsonData:@"documents"];
for(int i=0;i<[documentDetailsArray count];i++)
   NSDictionary *singleDocumentDetail = [documentDetailsArray objectAtIndex:0];
   NSLog(@"%@",[singleDocumentDetail objectForKey:@"id"]);

你可以试试这个.. :)

【讨论】:

这个答案与restkit无关

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

RestKit - 将数组的键路径映射到该数组内的对象

Restkit 将多个 json 提要映射到同一个数组

Restkit 映射 0.2

没有关键路径的 Reskit 映射数组

Restkit 0.20 嵌套对象数组映射问题

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