【发布时间】:2013-05-02 12:46:05
【问题描述】:
我有一个简单的NSArray,包含NSNumbers。
我以这种方式按升序对数组进行排序:
NSSortDescriptor *lowestToHighest = [NSSortDescriptor sortDescriptorWithKey:@"self" ascending:YES];
[_scores sortUsingDescriptors:[NSArray arrayWithObject:lowestToHighest]];
我的问题是,我希望包含 0 的 NSNumbers 位于末尾而不是开头。这是我可能需要排序的数组类型(包含一些空的 NSNumbers 仅用于示例):
0
25
12
0
8
0
我的代码当然是这样对数组进行排序的:
0
0
0
8
12
25
我想要的是这样的:
8
12
25
0
0
0
当然,我可以通过删除带有0 的行并在末尾添加它们来手动重新排序,但我正在寻找最干净的解决方案。
【问题讨论】:
-
8, 12, 0是升序还是降序?您是如何将nil存储在NSArray中的?或者你确定你有NSNumber实例?他们不是NSStrings,而是? -
@H2CO3 同意作者如何在 NSArray 中存储 nil 值以表示 NSNumber
-
它是一个升序,除了值0,它被发送到数组的末尾。它们实际上不是“零”对象,而是未初始化的 NSNumber。在调试控制台中显示为 [5] id 0x00000000
-
我从帖子中删除了它们,因为它确实很奇怪。对此感到抱歉。
-
@rdurand
0x00000000是NULL指针 -> 它们实际上是nil。 你是如何将它们放入数组中的?这是某种CFArray桥接吗?
标签: ios objective-c nsarray nssortdescriptor