NSMutableArray排序 - 将参数传递给比较器块

时间:2014-07-31 09:19:38

标签: ios sorting nsmutablearray

我需要对字符串数组进行排序,并希望在比较器块中访问viewController属性。因此,计划将ViewController对象传递给比较器块。如何将参数传递给比较器块?

这是守则。

由于比较器逻辑冗长且排序使用很多地方,我无法在声明中扩展comparatorBlock。

sortedArray = [NsMutableArray arrayWithArray:[unsortedArray sortedArrayWithOptions:0 usingComparator:comparatorBlock]];

1 个答案:

答案 0 :(得分:0)

如果您在视图控制器的方法中定义块,那么它应该能够访问self

如果你不能这样做,你可以创建一个返回块的函数,并将视图控制器作为函数参数捕获:

static NSComparator blockWithViewController(UIViewController *viewController) {
    return ^NSComparisonResult (id object1, id object2) {
        NSLog(@"view controller is %@", viewController);
        return NSOrderedSame;
    };
}

你会这样使用它:

NSMutableArray *sortedArray = [[unsortedArray sortedArrayWithOptions:0 usingComparator:blockWithViewController(viewController)] mutableCopy];