0

我正在排序一个 NSMutableArray,它的 NSString 包含数字。
这是我正在使用的代码:

//creating mutable array
NSMutableArray *myArray = [NSMutableArray arrayWithObjects:@"4", @"2", @"7", @"8", nil];

//sorting
[myArray sortUsingComparator:^NSComparisonResult(NSString *str1, NSString *str2) {
    return [str1 compare:str2 options:(NSNumericSearch)];
}];

//logging
NSLog(@"%@", myArray);

当我构建 Xcode 突出显示这段代码时出现错误: }];错误是:
Incompatible block pointer types initializing 'int (^)(struct NSString *, struct NSString *)', expected 'NSComparator'

4

1 回答 1

0

我认为您需要将其id用作块的参数类型,而不是 NSString。在 Apple 的Blocks Short Practical Guide 中,它说:

Foundation 框架声明了用于比较两个项目的 NSComparator 类型:

typedef NSComparisonResult (^NSComparator)(id obj1, id obj2);
于 2012-06-26T15:13:36.793 回答