我有一个NSMutableOrderedSet
包含NSDate
对象。最初,这里是值:
2014-10-08 12:46:48 +0000
2014-10-08 12:46:42 +0000
用调用addObject
后2014-10-08 12:45:40 +0000
,我得到以下输出:
2014-10-08 12:46:42 +0000
2014-10-08 12:46:48 +0000
2014-10-08 12:45:40 +0000
他们为什么不被订购?
我有一个NSMutableOrderedSet
包含NSDate
对象。最初,这里是值:
2014-10-08 12:46:48 +0000
2014-10-08 12:46:42 +0000
用调用addObject
后2014-10-08 12:45:40 +0000
,我得到以下输出:
2014-10-08 12:46:42 +0000
2014-10-08 12:46:48 +0000
2014-10-08 12:45:40 +0000
他们为什么不被订购?
anNSMutablOrderedSet
不像TreeSet
保持排序的 Java。看addObject:
文档:
如果给定对象还不是成员,则将给定对象附加到可变有序集的末尾。
您应该手动调用
- (void)sortUsingDescriptors:(NSArray *)sortDescriptors
或者
- (void)sortUsingComparator:(NSComparator)cmptr
我不知道为什么没有订购它们,但是您可以通过执行以下操作按日期对它们进行排序:
NSArray *mySortedArray =[myArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
NSComparisonResult result;
NSDate *dateA = (NSDate*)obj1;
NSDate *dateB = (NSDate*)obj2;
result = [dateA compare:dateB];
return result;
}];
它基本上就像 NSMutable 数组,但没有重复的对象。文档说 addObjec: 将其添加到末尾。您需要使用以下方法之一应用排序
– sortUsingDescriptors:
– 排序使用比较器:
– sortWithOptions:usingComparator:
– 排序范围:选项:使用比较器:
在语义上认为它与采用没有顺序的 NSMutableSet 相同,然后从中创建一个 NSMutableArray ,然后不喜欢数组的顺序。你需要告诉它如何排序。NSMutableOrderedSet 没有内置 DWIM(按照我的意思做)算法,你告诉它怎么做。