我有这段代码,需要获取键值 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;
}
);
}
答案 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"]];