Я хочу удалить дубликаты из nsmutablearray.Удалить дубликат из nsmutablearray, содержащий nsdictionary
Массив Структура: -
( { "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. Если да, то удалите 1-й словарь. т.е. ожидаемый результат для указанных выше arrayis: -
(
{
"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;
}
)
Именно поэтому создание пользовательского объекта модели настолько ценно. В этом случае вы можете переопределить 'isEqual' и поместить объекты в набор, чтобы удалить обманы. Избыточность словарей означает, что код намного сложнее, чем необходимо. – trojanfoe
Вы хотите, чтобы row_id = 1 означает последний идентификатор в дубликатах –