如何使用谓词过滤此数组?

时间:2015-09-26 01:36:19

标签: nsarray nspredicate nsset

我有一个名为media_item的对象,它有一堆与之相关的属性,但其中一个属性是一组字符串的国家/地区。我想要做的是获取所有媒体项目中所有可用countires的集合(唯一列表)。例如,举例说明我有2个对象。 object1.countries[us,gbr,spa]object2.countries[us,chi,fre]。我想要做的是创建另一组这些对象并将其显示给用户。所以结果应该是newArray[us,gbr,spa,chi,fre]我尝试使用NSPredicate,但我无法弄清楚他的格式字符串继承人我认为会起作用。

NSMutableArray *all_media_items = [[[[NSMutableArray arrayWithArray:_presentations]arrayByAddingObjectsFromArray:_videos]arrayByAddingObjectsFromArray:_brochures]mutableCopy];
NSSet *all_available_countries_set = [[NSSet setWithArray:all_media_items]filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"self.countries"]];

在这种情况下,自我会被视为媒体对象吗?然后dot访问器说查看数组的所有索引,如果它们不是重复的,则将它们放入新的arrray中。它看起来不对,但我无法弄明白。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我想出了如何在不使用NSPRedicate的情况下这样做

NSMutableArray *all_media_items = [[[_presentations arrayByAddingObjectsFromArray:_brochures]arrayByAddingObjectsFromArray:_videos]mutableCopy];
NSMutableSet *all_countries = [NSMutableSet set];
[all_media_items enumerateObjectsUsingBlock:^(UFPMediaObject *media_object, NSUInteger idx, BOOL *stop) {
    [media_object.countries enumerateObjectsUsingBlock:^(NSString* country, BOOL *stop) {
        [all_countries addObject:country];
    }];
}];

哪个好,花花公子,但我想知道如何使用NSPRedicate