我有一个名为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中。它看起来不对,但我无法弄明白。有什么想法吗?
答案 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