从NSArray中删除同一天的NSDate

时间:2017-02-08 11:49:21

标签: uitableview cocoa-touch nsarray nsdate

我正在努力想出最好/最干净的方法。

基本上我有一个NSDates数组,我正在尝试使用UITableView Delegate方法(numberOfSectionsInTableView)来返回数组中不同的日期数。

所以这是另一个例子:

我的阵列:

NSDate *1 (Monday 1st Jan)
NSDate *2 (Monday 1st Jan)
NSDate *3 (Tuesday 2nd Jan)
NSDate *4 (Wednesday 3rd Jan)
NSDate *5 (Wednesday 3rd Jan)

我想要的数组:

NSDate *1 (Monday 1st Jan)
NSDate *2 (Tuesday 2nd Jan)
NSDate *3 (Wednesday 3rd Jan)

1 个答案:

答案 0 :(得分:2)

可能最简单的解决方案是将一组日期数组传递给一个数组,然后再将数组传递给一个数组,但是你放弃了排序。
根据定义,NSSet只能包含一个相等实例的实例。

NSSet *set = [NSSet setWithArray: datesArray];

通过向isEqual调用每个元素之一,可以确保您无法复制日期。 isEqual调用NSDate中的isEqualToDate仅在实例代表相同日期时才考虑相等。
然后:

NSArray * newdates = set.allObjects

值得一提的是,在NSArray上你也可以使用KVC来建立一个独特的联盟:

NSArray * uniqueDates = [datesArray valueForKeyPath:@"@distinctUnionOfObjects.self"];