2015-09-26 54 views
0

我有一个名为media_item的对象,它有一堆与它相关的属性,但其中一个属性是一组字符串的国家。我想要做的是获得所有媒体项目中的所有可用优化的集合(唯一列表)。举例来说,举个例子,我有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"]]; 

在这种情况下,自我会被视为媒体对象吗?然后点访问器会说查看数组的所有索引,并将它们放入新的数组中,如果它们不重复的话。它看起来是正确的,但我不知道。有任何想法吗?

回答

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