NSArray提取物品

时间:2012-07-21 13:00:02

标签: objective-c cocoa

我使用NSPredicate从NSMutableArray中提取数据:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", value];
NSArray *results = [array_to_search filteredArrayUsingPredicate:predicate];

当我使用时:

NSLog(@"%@", results);

我明白了:

({pub_id = 102 "pub_name" = "some publisher" city = "Peshawar"});

我想提取所有3个项pub_idpub_namecity的值。

4 个答案:

答案 0 :(得分:1)

返回的是一个包含1个对象的数组(用花括号{}表示一个字典)。要提取三个组件中的每一个,您可以执行以下操作:

NSString *pub_id = [[results objectAtIndex:0] valueForKey:@"pub_id"];
NSString *pub_name = [[results objectAtIndex:0] valueForKey:@"pub_name"];
NSString *city = [[results objectAtIndex:0] valueForKey:@"city"];

请记住,此解决方案仅适用于您提供的示例。如果查询在数组中返回多个对象,则需要使用enumeration / for循环来读取结果。

答案 1 :(得分:0)

我已经明白你想分别得到这三个对象,不是吗? 如果我是对的:

NSLog(@"PUBID: %d \n PUBNAME: %@ \n CITY: %@", [[results objectAtIndex:0] intValue], [results objectAtIndex:1], [results objectAtIndex:2]);

此代码应打印
       PUBID:102          PUBNAME:一些出版商        城市:白沙瓦。

所以你的结果来自

  

[array_to_search filteredArrayUsingPredicate:predicate];

是另一个数组,您可以将其与objectAtIndex:

一起使用

答案 2 :(得分:0)

要将字典中的所有值都放到数组中,请执行以下操作:

[dictionary allValues];

答案 3 :(得分:0)

使用prodicate从数组中获取的对象显然是一个NSDictionary。使用以下代码:

NSString *city = [[results objectAtIndex:0] valueForKey:@"city"];

等等。