我有一个简单的NSArray
,其中包含NSNumber
s。按升序对NSArray中的数字进行排序,但在末尾发送零。
我这样排序按升序排列:
NSSortDescriptor *lowestToHighest = [NSSortDescriptor sortDescriptorWithKey:@"self" ascending:YES];
[_scores sortUsingDescriptors:[NSArray arrayWithObject:lowestToHighest]];
我的问题是,我想包含0
是在末尾,而不是在开始NSNumber
秒。这里是我可能要排序的类型的数组(包含一些空NSNumber
的只有我的例子):
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'实例吗?他们不是'NSString'吗? – 2013-05-02 12:48:35
@ H2CO3对作者如何在NSArray中表示NSNumber的方式设法存储无值进行了约定 – 2013-05-02 12:50:16
除了数值** 0 **之外,它是递增顺序,发送到数组的末尾。事实上,它们不是“零”对象,而是非初始化的NSNumbers。在调试控制台中显示为** [5] id \t 0x00000000 ** – rdurand 2013-05-02 12:51:11