2015-09-26 53 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