我正在努力想出最好/最干净的方法。
基本上我有一个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)
答案 0 :(得分:2)
可能最简单的解决方案是将一组日期数组传递给一个数组,然后再将数组传递给一个数组,但是你放弃了排序。
根据定义,NSSet
只能包含一个相等实例的实例。
NSSet *set = [NSSet setWithArray: datesArray];
通过向isEqual
调用每个元素之一,可以确保您无法复制日期。 isEqual
调用NSDate
中的isEqualToDate
仅在实例代表相同日期时才考虑相等。
然后:
NSArray * newdates = set.allObjects
值得一提的是,在NSArray上你也可以使用KVC来建立一个独特的联盟:
NSArray * uniqueDates = [datesArray valueForKeyPath:@"@distinctUnionOfObjects.self"];