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이있는 모든 사전을 포함 할 경우 확인하는 것입니다. 예이면 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은 중복 ID가 –