Xcode - 从数组中的数组中获取对象

时间:2014-01-10 13:47:51

标签: ios objective-c cocoa-touch ios7

我有一个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
  },
]

我的方法接收表名作为参数并返回时间戳。例如,我如何获得表格“研讨会”的时间戳(1389106977)?这看起来很简单但我无法解决'嵌套'数组/词典。

谢谢,

编辑:

这是我添加了trojanfoe的代码。

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");
}

这很有效,也很有意义

3 个答案:

答案 0 :(得分:2)

JSON数据看起来像一个字典数组,因此您可以迭代数组并测试“Name”条目:

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数据转换为(自定义)模型对象数组,这样可以更轻松地操作数据,因为您的应用变得更多复杂。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

NSNumber *timestamp = response[1][@"LastMod"];