2013-04-24 4 views
0

Я пытаюсь настроить NSSet для удаления всех дубликатов из NSMutableArray объектов NSDictionary, однако я не уверен, как установить одно из значений, необходимых для создания NSSet, в элемент в NSDictionary Объекты NSMutableArray ... надеюсь, это имеет смысл.удаление дубликатов из NSMutableArray с помощью NSSet

Это то, что выглядит 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 основе от значения SERIESID каждого NSDictionary в год.

любая помощь будет оценена.

+0

Пожалуйста, перефразируйте свой вопрос. Является ли yearArray измененным массивом, из которого вы пытаетесь удалить дубликаты? – Suhas

+0

Обновлен мой вопрос с ** Я хотел бы знать, как создать уникальный yearArray, основанный на значении SERIESID каждого NSDictionary в yearArray. ** Надеюсь, это имеет смысл. – HurkNburkS

+0

Не совсем. Вы хотите получить массив SERIESID и ничего больше? – lnafziger

ответ

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

Я обновленное решение, данное Suhas:

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" будет содержать только уникальные элементы.

 Смежные вопросы

  • Нет связанных вопросов^_^