Удалить дубликат из nsmutablearray, содержащий nsdictionary
Я хочу удалить дубликаты из nsmutablearray.
Структура массива: -
(
{
"act_end_date" = "";
"act_entry_date" = "13/11/2014";
"act_recurrrance_type" = Daily;
"act_start_date" = "2014-11-13";
"row_id" = 0;
"act_id" = 2;
}
{
"act_end_date" = "";
"act_entry_date" = "13/11/2014";
"act_recurrrance_type" = Daily;
"act_start_date" = "2014-11-13";
"row_id" = 1;
"act_id" = 2;
}
{
"act_end_date" = "";
"act_entry_date" = "16/11/2014";
"act_recurrrance_type" = Daily1;
"act_start_date" = "2014-11-15";
"row_id" = 2;
"act_id" = 3;
}
)
Что я хочу, чтобы проверить, где массив содержит любой словарь, который имеет тот же act_id. Если да, то удалите первый словарь. т.е. ожидаемый результат для вышеуказанного массива:
(
{
"act_end_date" = "";
"act_entry_date" = "13/11/2014";
"act_recurrrance_type" = Daily;
"act_start_date" = "2014-11-13";
"row_id" = 1;
"act_id" = 2;
}
{
"act_end_date" = "";
"act_entry_date" = "16/11/2014";
"act_recurrrance_type" = Daily1;
"act_start_date" = "2014-11-15";
"row_id" = 2;
"act_id" = 3;
}
)
Есть ли у них какой-либо способ? Возможно ли это с помощью NSPREDICATE?
Я пытаюсь сделать это следующим образом: -
NSMutableArray *filteredArray = [NSMutableArray array];
for (NSMutableDictionary* E1 in Event_Array)
{
BOOL hasDuplicate = [[filteredArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"act_id == %@", [E1 objectForKey:@"act_id"]]] count] > 0;
if (!hasDuplicate)
{
[filteredArray addObject:E1];
}
}
Ибо возвращает массив: ---
(
{
"act_end_date" = "";
"act_entry_date" = "13/11/2014";
"act_recurrrance_type" = Daily;
"act_start_date" = "2014-11-13";
"row_id" = 0;
"act_id" = 2;
}
)
Что я хочу это
(
{
"act_end_date" = "";
"act_entry_date" = "13/11/2014";
"act_recurrrance_type" = Daily;
"act_start_date" = "2014-11-13";
"row_id" = 1;
"act_id" = 2;
}
)