2013-04-24 76 views
0

我想設置一個NSSet以從NSMutableArray的NSDictionary對象中刪除所有重複,但我不確定如何設置創建NSSet所需的值之一NSMutableArray的NSDictionary對象...希望這是有道理的。使用NSSet從NSMutableArray中刪除重複

這是NSDictionary的樣子

ID = 22; 
SERIESID = 33; 
YEAREND = 2002; 
YEARSTART = 1996; 

這是到目前爲止我的代碼

NSSet *uniqueElements = [NSSet setWithArray:yearArray]; 

// iterate over the unique items 
for(id element in uniqueElements) { 
    // create new NSArray of unique entries 
} 

我想知道如何根據關創造一個獨特的yearArray每NSDictionary中的SERIESID值在一年中陣列。

任何幫助,將不勝感激。

+0

請更改您的問題。是yearArray您嘗試刪除重複項的可變數組? – Suhas 2013-04-24 01:40:34

+0

用**更新了我的問題我想知道如何根據yearArray中每個NSDictionary的SERIESID值創建一個唯一的yearArray。**我希望這更有意義。 – HurkNburkS 2013-04-24 01:48:01

+0

不是。你想結束一系列的SERIESID,而不是別的? – lnafziger 2013-04-24 01:56:09

回答

4

你可以試試這個

NSMutableArray *resultantArray = [NSMutableArray array]; 

for(NSDictionary *dict in yearArray) 
{ 
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SERIESID == %@", 
              [dict valueForKey:@"SERIESID"]]; 

    NSArray filteredArray = [resultantArray filteredArrayUsingPredicate:predicate]; 

    if(![filteredArray count]) 
    { 
    [resultantArray addObject:dict]; 
    } 
} 
0

我已經更新由蘇哈斯給出的解決方案:

NSMutableArray *resultantArray = [NSMutableArray array]; 
NSMutableArray * yearArrayCopy = [yearArray copy]; 
for(NSDictionary *dict in yearArrayCopy) 
{ 
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SERIESID == %@", 
             [dict valueForKey:@"SERIESID"]]; 

    NSArray *filteredArray = [yearArray filteredArrayUsingPredicate:predicate]; 

    if([filteredArray count]) 
    { 
     [resultantArray addObject:dict]; 
     [yearArray removeObjectsInArray:filteredArray]; 
    } 
} 

的 「resultantArray」 將只包含獨特的元素。