按降序对NSArray进行排序

13 浏览
0 Comments

按降序对NSArray进行排序

我有一个包含NSNumber对象的NSArray,我已经成功使用以下方法按升序排序:\n

[myArray sortedArrayUsingSelector:@selector(compare:)]

\n然而,我需要按降序排序。我猜测compare:只能按升序排序。虽然我可以反转NSArray,但我想知道是否有更简单或更有效的方法来做到这一点。\n编辑:我找到了这个问题,它提供了一个简单的方法来反向迭代NSArray:\n

for (id someObject in [myArray reverseObjectEnumerator])

\n这个方法很好,我猜这是一个简单而不错的解决方案,但我想知道是否有一种指定降序排序的方法。

0
0 Comments

原因:问题的出现是因为需要对一个NSArray进行降序排序。

解决方法:可以使用sortarrayusingcomparator方法,通过反转对象的顺序来获得降序排列的NSArray。以下是解决方法的代码示例:

NSArray *sortedArray = [array sortedArrayUsingComparator:
^NSComparisonResult(id obj1, id obj2){
        return [obj2 compare:obj1];
    }];

这段代码将对NSArray中的对象进行比较,并根据比较结果返回NSComparisonResult类型的值。通过反转对象的比较结果,可以实现降序排列。

这个方法非常有效,我曾经使用它来对NSString类型的数组进行排序。在使用之前,需要确保数组已经排序。

通过使用上述的解决方法,可以轻松地将一个NSArray按照降序排列。

0
0 Comments

问题的原因是要对一个NSArray进行降序排序,但NSArray本身只提供了升序排序的方法。解决方法是自定义一个类别,其中包含一个reverseCompare方法,通过该方法实现对NSNumber对象的降序比较。如下所示:

NSNumber (Utility)

- (NSComparisonResult)reverseCompare:(NSNumber *)aNumber {

return [aNumber compare:self];

}

这种方法的好处是可以在任何地方重复使用,不需要编写循环进行反向迭代。但不足之处是需要编写更多的代码。

0
0 Comments

在这段对话中,第一个人提到他想要将一个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对象上,得到了按照降序排序的新数组。第一个人对这个解决方法表示满意。

0