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

时间:2014-09-09 05:21:44

标签: ios sorting nsarray

我在这里看到很多关于排序NSArray的问题,特别是那些充满自定义对象的问题,但它似乎总是归结为人们正在排序的特定属性或值。按名称排序,按年龄排序,按日期排序等。

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

@interface SYSprocket : NSObject

@property int numberOfDoodads;
@property int widthOfWidgets;

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

我的数组不是那么大,所以我可以根据需要迭代它们,但这似乎是不可能的事情,对吧?或者我错了吗?

1 个答案:

答案 0 :(得分:2)

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

实施例

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

}];