【问题标题】:Xcode - Getting object out of an array within an arrayXcode - 从数组中的数组中获取对象
【发布时间】:2014-01-10 13:47:51
【问题描述】:

我有一个 JSON 数组(字典?),这些对象本身就是一个数组。我需要在这些数组之一中找到一个值,以便稍后进行比较。我的JSON 数据的一部分:

[
  {
    "Name": "Exhibitor",
    "Url": "api/congress/exhibitor",
    "ResourceType": "Data",
    "LastMod": 1389106977
  },
  {
    "Name": "Workshop",
    "Url": "api/congress/workshop",
    "ResourceType": "Data",
    "LastMod": 1389106977
  },
  {
    "Name": "Speaker",
    "Url": "api/congress/Speaker",
    "ResourceType": "Data",
    "LastMod": 1389106977
  },
]

我的方法接收一个表名作为参数并返回一个时间戳。例如,我将如何收到表“workshop”的时间戳(1389106977)?这看起来很简单,但我无法解决“嵌套”数组/字典。

谢谢,

编辑:

这是我添加了木马的代码。

NSError* localError;
NSMutableArray *syncDataArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
if (syncDataArray)
{
    NSNumber *lastMod = nil;
    for (NSDictionary *dict in syncDataArray) 
    {
        NSLog(@"current table is: %@", dict[@"Name"]);
        if ([tableName isEqualToString:dict[@"Name"]]) 
        {
            lastMod = dict[@"LastMod"];
            //break;
         }
    }
    NSLog(@"LastMod = %@", lastMod);
}
else
{
    NSLog(@"syncDataArray is empty");
}

这很好用,很有意义

【问题讨论】:

  • 你使用的是什么 JSON 反序列化器?
  • 您拥有的是 JSON“对象”(字典)数组。转到 json.org 并研究符号,以便您理解它。

标签: ios objective-c cocoa-touch ios7


【解决方案1】:

JSON 数据看起来像一个字典数组,因此您可以遍历数组并测试“名称”条目:

NSArray *jsonData = ...;   // You have converted JSON to Objective-C objects already
NSNumber *lastMod = nul;
for (NSDictionary *dict in jsonData) {
    if ([@"Workshop" isEqualToString:dict[@"Name"]]) {
        lastMod = dict[@"LastMod"];
        break;
    }
}
if (lastMod) {
    // You found it
}

(请注意,我不确定用于存储“LastMod”对象的对象类型,因此您可能需要进行一些调试才能找出答案)。

编辑如果您广泛使用这些数据,您应该立即将 JSON 数据转换为(自定义)模型对象的数组,这将使您的应用程序变得更容易操作数据复杂。

【讨论】:

  • 谢谢,我现在只是将您的代码合并到我的程序中进行测试。
  • 完美,这正是我想要的,谢谢!
  • "LastMod" 将返回一个 NSNumber 值。
【解决方案2】:

你有一个字典数组,所以它看起来像:

NSNumber *timestamp = [[JSON objectAtIndex:index] objectForKey:@"LastMod"];

【讨论】:

    【解决方案3】:
    NSNumber *timestamp = response[1][@"LastMod"];
    

    【讨论】:

      猜你喜欢
      • 2017-10-06
      • 2021-08-22
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-24
      • 2022-10-19
      相关资源
      最近更新 更多