<分区>
标签 ios objective-c
<分区>
我有一个如下所示的 NSMutableArray,我想查看并删除具有相同 realLocationName 和 ADD_LINE1 的对象 并只留下 realLocationName 对象。
我现在的数组:
(
{
locationId = "12-11-2013 10:23:53";
realLocationName = wauk;
},
{
locationId = "01-02-2014 10:10:11";
realLocationName = sdf;
},
{
locationId = "01-02-2014 11:55:49";
realLocationName = "514 COURT AVE";
},
{
"ADD_CITY" = city;
"ADD_LINE1" = "514 COURT AVE";
"ADD_LINE2" = "";
"ADD_STATE" = IA;
"ADD_ZIP" = 50833;
"BUSINESS_NAME" = "";
"FIRST_NAME" = joe;
"LAST_NAME" = smith;
},
{
"ADD_CITY" = cty2;
"ADD_LINE1" = "514 COURT AVE";
"ADD_LINE2" = "";
"ADD_STATE" = IA;
"ADD_ZIP" = 50833;
"BUSINESS_NAME" = "";
"FIRST_NAME" = randy;
"LAST_NAME" = red;
}
)
我想得到什么:
(
{
locationId = "12-11-2013 10:23:53";
realLocationName = wauk;
},
{
locationId = "01-02-2014 10:10:11";
realLocationName = sdf;
},
{
locationId = "01-02-2014 11:55:49";
realLocationName = "514 COURT AVE";
}
)
编辑:
或者这个场景: 数组 =
(
{
locationId = "12-11-2013 10:23:53";
realLocationName = wauk;
},
{
locationId = "01-02-2014 10:10:11";
realLocationName = sdf;
},
{
"ADD_CITY" = city;
"ADD_LINE1" = "514 COURT AVE";
"ADD_LINE2" = "";
"ADD_STATE" = IA;
"ADD_ZIP" = 50833;
"BUSINESS_NAME" = "";
"FIRST_NAME" = joe;
"LAST_NAME" = smith;
},
{
"ADD_CITY" = cty2;
"ADD_LINE1" = "514 COURT AVE";
"ADD_LINE2" = "";
"ADD_STATE" = IA;
"ADD_ZIP" = 50833;
"BUSINESS_NAME" = "";
"FIRST_NAME" = randy;
"LAST_NAME" = red;
}
)
并得到这个:
(
{
locationId = "12-11-2013 10:23:53";
realLocationName = wauk;
},
{
locationId = "01-02-2014 10:10:11";
realLocationName = sdf;
},
{
"ADD_CITY" = city;
"ADD_LINE1" = "514 COURT AVE";
"ADD_LINE2" = "";
"ADD_STATE" = IA;
"ADD_ZIP" = 50833;
"BUSINESS_NAME" = "";
"FIRST_NAME" = joe;
"LAST_NAME" = smith;
}
)
最佳答案
您可以使用一个集合 (NSMutableSet
) 来检查是否添加了 realLocationName。
这段代码是如何工作的?
1) 每个对象,我得到“realLocationName”键或“ADD_LINE1”键的值,假设没有对象同时拥有这两个键,但肯定存在一个键
2) 数组的顺序是所有“realLocationName”对象都在开头部分 - 这是因为要求具有 realLocationName 的对象优先于具有 ADD_LINE1 的对象。
NSMutableArray *arr_noduplicates = [NSMutableArray array];
NSMutableSet *set_of_already_added = [NSMutableSet set];
for (NSDictionary *obj in originalArray) {
NSString *str_value = [NSString stringWithFormat:@"%@%@",
obj[@"realLocationName"] ? obj[@"realLocationName"] : @"",
obj[@"ADD_LINE1"] ? obj[@"ADD_LINE1"] : @""];
if (![set_of_already_added containsObject:str_value]) {
[arr_noduplicates addObject:obj];
[set_of_already_added addObject:str_value];
}
}
关于ios - 遍历 nsmutablearray 并删除重复的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20889135/