我在这里看到了很多关于对 NSArray
进行排序的问题,尤其是那些充满自定义对象的问题,但它似乎总是归结为人们排序所依据的特定属性或值.按姓名排序、按年龄排序、按日期排序等。
但是否可以通过使用对象属性的公式对 NSArray
进行排序,而不是仅通过单个属性?例如,如果我有一个自定义类...
@interface SYSprocket : NSObject
@property int numberOfDoodads;
@property int widthOfWidgets;
和输入变量(int)extraNumber
,是否可以通过公式对
?SYSprocket
的NSArray
进行排序(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/