通过所有特定键来过滤NSDrray的NSArray

时间:2013-12-10 16:46:00

标签: objective-c

我一直试图解决这个问题但到目前为止没有任何成功。

我知道如何使用for循环来解决这个问题,但我想使用NSPredicate

来学习它

我有以下NSArray of NSDictionaries

[ { "content"="content1", "path"="/usr/name/..." },
  { "content"="acontent2", "path"="/usr/name/..." },
  { "content"="content3", "path"="/usr/name/..." },
  { "content"="content14", "path"="/usr/name/..." } ]

我想为数组中的所有项返回“content”键的所有值的数组。即,返回应该是

[ "content1", "content2", "content3", "content4" ]

怎么做?

由于

2 个答案:

答案 0 :(得分:3)

你可以这样做:

NSPredicate *pred = [NSPredicate predicateWithFormat:@"content =[cd] %@", @"content1"];
NSArray * array = [YourArray filteredArrayUsingPredicate:pred];

这将过滤您的数组以显示content = content1的所有值。 但这是用于过滤数组但是你想要的输出:

[ "content1", "content2", "content3", "content4" ]

看起来更像是排序。

希望我向您解释NSPredictate是如何工作的。

答案 1 :(得分:2)

只需使用valueForKey:

即可
NSArray *contentItems = [array valueForKey:@"content"];
  

返回一个数组,其中包含调用valueForKey的结果:在每个数组的对象上使用键   返回的数组包含返回nil的每个对象的NSNull元素。