填充NSArray Json数据

时间:2013-10-19 16:05:05

标签: ios objective-c json nsmutabledictionary

我有这段代码,需要获取键值 nombre 并填充NSArray *数组但不能正常工作

NSURL *urlPaises = [NSURL URLWithString:@"http://tr.com.mx/prb2/buscarPais.php"];
NSData *dataPaises = [NSData dataWithContentsOfURL:urlPaises];

    NSArray *array;

    NSMutableDictionary *jsonPaises;
    NSError *error;

    array = [[NSArray alloc]init];


        jsonPaises = [NSJSONSerialization JSONObjectWithData:dataPaises options:kNilOptions error:&error];

        array = [jsonPaises objectForKey: @"nombre"];


        Printing description of self->jsonPaises:
        {
            paises =     (
                        {
                    id = 49;
                    nombre = Alemania;
                },
                        {
                    id = 54;
                    nombre = Argentina;
                },

                        {
                    id = 44;
                    nombre = Inglaterra;
                },

                        {
                    id = 598;
                    nombre = Uruguay;
                },
                        {
                    id = 58;
                    nombre = Venezuela;
                }
            );
        }

3 个答案:

答案 0 :(得分:3)

您似乎需要使用valueForKeyPath

[jsonPaises valueForKeyPath:@"praises.nombre"]

应该返回nombres

的数组

答案 1 :(得分:0)

jsonPaises是一个数组。数组具有索引0,1,2而不是键"apple","foo","bar"。询问数组,键的值永远不会起作用。你有一系列词典。 如果你想要的是一个新的数组,其中包含原始数组中每个字典的键“nombre”的值,那么试试这个:

NSMutableArray * newArray = [[NSMutableArray alloc]init]; //create the new array
for (NSDictionary * dict in array) {  //for each dictionary in the first array
    id object = dict[@"nombre"]; //get the object stored in the key
    if(object) { //check that the key/value was actually in the dict
         [newArray addObject:object]; //add the object to the new Array
    }
}

答案 2 :(得分:0)

你需要更具体的是key @“nombre”的值是单个名称还是一个名字数组?我猜这是一系列名字然后尝试:

for (NSString *name in [jsonPaises objectForKey:@"nombre"]) {
      NSLog("%@", name);
}

如果key @“nombre”的值是单个字符串,则将其添加到数组中:

[array addObject:[jsonPaises objectForKey: @"nombre"]];