【问题标题】:iOS: How do I get a list of names out of an array of dictionaries?iOS:如何从字典数组中获取名称列表?
【发布时间】:2015-05-25 14:43:16
【问题描述】:

我目前正在尝试从服务器的文件中读取对象:

 NSURLSession *session = [NSURLSession sharedSession];
NSString *string = @"http://myfile.php";
//NSLog(string); //CHECK

[[session dataTaskWithURL:[NSURL URLWithString:string]
       completionHandler : ^(NSData *data,
                             NSURLResponse *response,
                             NSError *error) {
           if (data.length > 0 && error == nil) {
               NSError *jsonvar;
               NSDictionary *greeting = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonvar];
               NSLog(@"%@", greeting);

               dispatch_sync(dispatch_get_main_queue(), ^{
                   NSDictionary *main = [greeting objectForKey:@"array"];
                   //self.beaconMajor.text = [NSString stringWithFormat:@"%@", [main objectForKey:@"name"]];

               });
           }
       }] resume];

}

这是我在执行 NSLog 时得到的响应:

array =     (
            {
        endDate = "0000-00-00";
        id = 3;
        name = ruben;
        startDate = "0000-00-00";
    },
            {
        endDate = "0000-00-00";
        id = 4;
        name = "hallo mama";
        startDate = "0000-00-00";
    },
            {
        endDate = "0000-00-00";
        id = 5;
        name = heyoo;
        startDate = "0000-00-00";
    },
            {
        endDate = "0000-00-00";
        id = 6;
        name = "Gerard Depardieu";
        startDate = "0000-00-00";
    }
);

谁能帮我看看如何读出这个数组的“名称”?

谢谢!

【问题讨论】:

  • 仅供参考 - main 应该是 NSArray,而不是 NSDictionary
  • 您需要数组中的名字还是整个名称数组?如果您只需要第一次出现,那么您需要 NSDictionary *main = [[greeting objectForKey:@"array"] firstObject]; 如果您需要数组中不同名称的数组,您可能会发现 kvc 很有帮助:[greeting[@"array"] valueForKeyPath:@"@distinctUnionOfObjects.name"] 在此处查看更多信息:nshipster.com/kvc-collection-operators

标签: ios json parsing server


【解决方案1】:

您可以手动完成:

NSArray *main = [greeting objectForKey:@"array"];
for (NSDictionary *dict in main) {
    NSLog(@"name=%@", dict[@"name"]);
}

或者您可以使用 KVC 从数组中的字典中获取所有名称:

NSArray *main = [greeting objectForKey:@"array"];
NSArray *names = [main valueForKey:@"name"];

(当您在数组上使用valueForKey 时,它将在每个包含的对象上调用valueForKey

【讨论】:

    猜你喜欢
    • 2012-11-25
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多