我需要对字符串数组进行排序,并希望在比较器块中访问viewController
属性。因此,计划将ViewController
对象传递给比较器块。如何将参数传递给比较器块?
这是守则。
由于比较器逻辑冗长且排序使用很多地方,我无法在声明中扩展comparatorBlock。
sortedArray = [NsMutableArray arrayWithArray:[unsortedArray sortedArrayWithOptions:0 usingComparator:comparatorBlock]];
答案 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];