我有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
为什么他们没有订购?
答案 0 :(得分:2)
NSMutablOrderedSet
不像Java TreeSet
那样保持排序。查看addObject:
文档:
将一个给定对象追加到可变有序集的末尾(如果它还不是成员)。
你应该手动调用
- (void)sortUsingDescriptors:(NSArray *)sortDescriptors
或
- (void)sortUsingComparator:(NSComparator)cmptr
答案 1 :(得分:1)
我没有回答为什么他们没有订购,但你可以通过以下方式按日期对它们进行排序:
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;
}];
答案 2 :(得分:0)
它基本上类似于NSMutable数组,但没有重复的对象。 文档说addObjec:将它添加到最后。 您需要使用以下方法之一来应用排序
- sortUsingDescriptors:
- sortUsingComparator:
- sortWithOptions:usingComparator:
- sortRange:options:usingComparator:
在语义上考虑它与获取没有顺序的NSMutableSet相同,从中创建NSMutableArray然后不喜欢数组的顺序。你需要告诉它如何排序。 NSMutableOrderedSet没有一个DWIM(做我的意思)算法,你告诉它如何。