ios - 使用对象属性按公式对 NSArray 进行排序

标签 ios sorting nsarray

我在这里看到了很多关于对 NSArray 进行排序的问题,尤其是那些充满自定义对象的问题,但它似乎总是归结为人们排序所依据的特定属性或值.按姓名排序、按年龄排序、按日期排序等。

但是否可以通过使用对象属性的公式对 NSArray 进行排序,而不是仅通过单个属性?例如,如果我有一个自定义类...

@interface SYSprocket : NSObject

@property int numberOfDoodads;
@property int widthOfWidgets;

和输入变量(int)extraNumber,是否可以通过公式SYSprocketNSArray进行排序(numberOfDoodads/widthOfWidgets) + extraNumber?

我的数组不是那么大,所以如果需要我可以遍历它们,但这似乎不是不可能的事情,对吧?还是我错了?

最佳答案

如果您想使用自定义逻辑进行排序,您可以在 NSArray 上使用 - (NSArray *)sortedArrayUsingComparator:(NSComparator)cmptr 方法,该方法采用带有排序逻辑的 block 并返回一个排序数组。

示例:

sortedArray = [arrayWithObjects sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
    
    // cast obj1, obj2 to appropriate classes
    // use if/else to do the comparision
    // return NSOrderedSame / NSOrderedAscending / NSOrderedDescending

}];

关于ios - 使用对象属性按公式对 NSArray 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25737159/

相关文章:

ios - 在数组中返回NSRegularexpression结果

nsmutablearray - 如何检查 NSMutableArray 中的所有对象相同的值

iphone - 核心图 : Allow horizontal scrolling in positive quadrant only

ios - 使用 Alamofire 下载文件

c++ - 自定义排序,总是强制 0 到升序后面?

java - 使用 Double 以相反的顺序对 HashMap 进行排序

iphone - 当用户同时旋转组件时,UIPickerView 会导致应用程序崩溃

ios - 使用 Swift 和 KissXML 创建 XML : example?

ios - 检查从另一个函数单击了哪个 UIButton

c# - 按字母顺序对列表进行排序