【问题标题】:Add JSON Responses to Array将 JSON 响应添加到数组
【发布时间】:2016-07-30 23:58:34
【问题描述】:

端点 JSON 响应始终只有一个 array,带有两个 dictionary 项。

[
    {
        "item_1": "Austin",
        "item_2": "Texas"
    }
]

我需要创建一个 item_1item_2 数组,以便能够在每次对端点进行新调用时向它们添加项目。对设置它的最佳方法有什么想法吗?

现在,我正在添加一个属性:

@property (strong, nonatomic) NSMutableArray *item1Array;

然后将 item1Array 属性设置为等于来自 JSON 端点的响应:

self.item1Array = response;
NSLog(@"Response Array: %@", self.item1Array);

记录它:

2016-04-01 13:35:42.787 A[66185:7391524] Response Array: (
        {
        "item_1" = Austin;
        "item_2" = Texas;
    }
)

但是在尝试将新响应添加到 item1Arrayitem2Array 时卡住了。

最终,我希望item1Array 中包含多个项目,这些项目反映了通过对端点的查询检索到的项目(即[@"Austin", @"Denver"])。

非常感谢任何帮助或与我正在做的事情不同的思考方式。

【问题讨论】:

  • 你是说要为 item1 和 item 2 制作不同的数组?
  • @RajanMaheshwari 是的,一个数组用于城市(item1),一个数组用于州(item2)
  • 那么你需要有两个 NSMutable 数组并解析 JSON 并将 item1 附加到第一个可变数组,将 item2 附加到第二个可变数组
  • @RajanMaheshwari 以item_1 为例:我已经有一个NSMutableArray 称为item1Array 对吗?我相信我也用response解析了JSON?所以我卡住的地方是将item_1 附加到item1Array,有什么想法吗?
  • 基本上你正在覆盖可变数组,你应该采用临时 json 数组或 responseArray。然后你还有一个数组里面的字典。您需要使用 value for key 来获取特定的 key 值,例如 item_1,然后附加它。

标签: ios objective-c json nsarray afnetworking


【解决方案1】:

创建两个 NSMutable 数组。根据您的 json,我们只有 1 个数组对象,并且在该对象中有一个包含 2 个键和值的字典。

首先在viewDidLoad 的某个地方初始化你的可变数组

item1Array = [[NSMutableArray alloc] init];
item2Array = [[NSMutableArray alloc] init];

然后在收到回复时追加。

//Appending item_1 in item1Array which is a NSMutableArray
[item1Array addObject:[[responseArray objectAtIndex:0] valueForKey:@"item_1"]];

//Appending item_2 in item2Array which is a NSMutableArray
[item2Array addObject:[[responseArray objectAtIndex:0] valueForKey:@"item_2"]];

【讨论】:

  • 当我执行 [self.item1Array addObject:[[self.item1Array objectAtIndex:0] valueForKey:@"item_1"]];[self.item1Array addObject:[[response objectAtIndex:0] valueForKey:@"item_1"]]; 时,我得到了 null。我肯定会得到一个响应数组,但无论我在做什么附加似乎都不起作用?
  • 我已经编辑了答案,您还必须先初始化可变数组。并为 json 响应采取一些不同的数组。不是同一个数组
【解决方案2】:

因此,在解析 JSON 时,您的 2 个数组应该已经存在,因此您可以追加新内容。您可以使用 KVC 提取您想要的内容:

NSArray *items = [response valueForKey:@"item_1"];

然后你只需要附加items

【讨论】:

  • 因此,如果我将@property (nonatomic) NSMutableArray *w1Array; 添加为一个可变数组,该数组将包含所有随时间追加的城市,然后执行[self.w1Array addObject:items];[self.w1Array addObjectsFromArray:items]; 我得到null。这就是我应该追加的方式吗?
  • 感谢您的帮助@Wain 我希望我有足够的信誉来投票给您,您对我很有帮助
  • 不是addObject:,因为items 是一个数组。 addObjectsFromArray:.
猜你喜欢
  • 1970-01-01
  • 2017-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-25
  • 2018-09-29
  • 2021-10-11
相关资源
最近更新 更多