nsarray过滤

时间:2010-10-20 07:53:41

标签: iphone sdk nsarray filtering

  

可能重复:
  removing duplicates in nsarray

朋友们,

我将值存储在nsarray中,我必须删除重复的日期。我的意思是这样的(2010年12月14日,付费,15/12/2010,待定,2010年12月15日,待定,16 / 12/2010,已付款)应为(2010年12月14日,付款,2010年12月15日,未决,2010年12月12日,已付款)。任何人都可以建议我删除有两天不同的重复项的最佳方法。

提前致谢。

此致 Sathish所在

2 个答案:

答案 0 :(得分:0)

使用NSSet(我们的NSMutableSet)。

集合中的对象必须响应NSObject协议方法hash和isEqual :(有关更多信息,请参阅NSObject)。 请参阅Collections Programming Topics

另一个解决方案是循环数组的每个元素,以便在不重复的情况下将元素添加到另一个数组(可变)中:

NSMutableArray* filteredArray = [[NSMutableArray alloc]init];
for (id obj in array) {
  BOOL duplicated=NO;
  for (id objTest in filteredArray) {
    if ((obj.date==objTest.date) && (obj.status==objTest.status)) {
      duplicated = YES;
    }
  }
  if (duplicated==NO) {
    [filteredArray addObject:obj];
  }
}

答案 1 :(得分:0)

您可以使用NSDictionary,key = NSDate和value = status(付费/待处理)。当您在字典中插入任何日期时,请检查字典的objectForKey:NSDate,如果它返回nil,则可以插入新日期。