按降序对NSArray进行排序
按降序对NSArray进行排序
我有一个包含NSNumber
对象的NSArray
,我已经成功使用以下方法按升序排序:\n
[myArray sortedArrayUsingSelector:@selector(compare:)]
\n然而,我需要按降序排序。我猜测compare:
只能按升序排序。虽然我可以反转NSArray
,但我想知道是否有更简单或更有效的方法来做到这一点。\n编辑:我找到了这个问题,它提供了一个简单的方法来反向迭代NSArray
:\n
for (id someObject in [myArray reverseObjectEnumerator])
\n这个方法很好,我猜这是一个简单而不错的解决方案,但我想知道是否有一种指定降序排序的方法。
原因:问题的出现是因为需要对一个NSArray进行降序排序。
解决方法:可以使用sortarrayusingcomparator方法,通过反转对象的顺序来获得降序排列的NSArray。以下是解决方法的代码示例:
NSArray *sortedArray = [array sortedArrayUsingComparator: ^NSComparisonResult(id obj1, id obj2){ return [obj2 compare:obj1]; }];
这段代码将对NSArray中的对象进行比较,并根据比较结果返回NSComparisonResult类型的值。通过反转对象的比较结果,可以实现降序排列。
这个方法非常有效,我曾经使用它来对NSString类型的数组进行排序。在使用之前,需要确保数组已经排序。
通过使用上述的解决方法,可以轻松地将一个NSArray按照降序排列。
在这段对话中,第一个人提到他想要将一个NSArray按降序排序。第二个人给出了一个解决方法,使用了NSSortDescriptor来实现。第一个人对这个解决方法表示满意,并认为它非常简单。
解决方法是使用NSSortDescriptor类来创建一个排序描述器,并将其应用于NSArray对象。排序描述器指定了按照数组元素的值进行排序,并将排序顺序设置为降序。然后,通过使用sortedArrayUsingDescriptors方法将排序描述器应用到NSArray对象上,得到了按照降序排序的新数组。
这个解决方法非常简单,只需要几行代码就可以实现。首先,创建一个NSSortDescriptor对象,通过sortDescriptorWithKey方法指定排序的键为"self",表示按照数组元素的值进行排序。然后,设置ascending属性为NO,表示降序排序。最后,将排序描述器放入一个NSArray对象中,并作为参数传递给sortedArrayUsingDescriptors方法,得到按照降序排序的新数组。
第一个人对这个解决方法表示满意,并认为它非常简单。他回复说“Thanks. I ended up using this and I like how it's really simple.”,表示感谢并且喜欢这个简单的解决方法。
总结起来,这段对话中的问题是如何将一个NSArray按照降序排序。解决方法是使用NSSortDescriptor类创建一个排序描述器,并将其应用于NSArray对象。这个解决方法非常简单,只需要几行代码就可以实现。通过将排序描述器应用到NSArray对象上,得到了按照降序排序的新数组。第一个人对这个解决方法表示满意。