从 NSArray 中删除同一天的 NSDate
Removing NSDate's with same day from NSArray
我正在努力想出最好/最干净的方法来做到这一点。
基本上我有一个 NSDates 数组,我正在尝试获取 UITableView 委托方法 (numberOfSectionsInTableView) return 数组中不相同的日期数。
这是另一个例子:
我的数组:
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)
可能最简单的解决方案是将日期数组传递到一个集合中,然后再传递到一个数组中,但您松散了排序。
根据定义 NSSet
只能包含一个相等实例。
NSSet *set = [NSSet setWithArray: datesArray];
通过对每个元素之一调用 isEqual
可以保证您不会有重复的日期。 NSDate
中的 isEqual
调用 isEqualToDate
仅当实例表示相同日期时才考虑相等。
那么:
NSArray * newdates = set.allObjects
值得一提的是,在 NSArray 上你还可以使用 KVC 来创建不同的联合:
NSArray * uniqueDates = [datesArray valueForKeyPath:@"@distinctUnionOfObjects.self"];
我正在努力想出最好/最干净的方法来做到这一点。
基本上我有一个 NSDates 数组,我正在尝试获取 UITableView 委托方法 (numberOfSectionsInTableView) return 数组中不相同的日期数。
这是另一个例子:
我的数组:
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)
可能最简单的解决方案是将日期数组传递到一个集合中,然后再传递到一个数组中,但您松散了排序。
根据定义 NSSet
只能包含一个相等实例。
NSSet *set = [NSSet setWithArray: datesArray];
通过对每个元素之一调用 isEqual
可以保证您不会有重复的日期。 NSDate
中的 isEqual
调用 isEqualToDate
仅当实例表示相同日期时才考虑相等。
那么:
NSArray * newdates = set.allObjects
值得一提的是,在 NSArray 上你还可以使用 KVC 来创建不同的联合:
NSArray * uniqueDates = [datesArray valueForKeyPath:@"@distinctUnionOfObjects.self"];