将swift排序方法转换为objective-c
转换此objective-c排序方法的最佳方式是什么将swift排序方法转换为objective-c,objective-c,swift,sorting,Objective C,Swift,Sorting,转换此objective-c排序方法的最佳方式是什么 let visibleViews = self.scrollView.visibleViews().sorted(by: {$0.frame.origin.x > $1.frame.origin.x} ) 我改为: [visibleViews sortUsingComparator:^NSComparisonResult(UIView *obj1, UIView *obj2) { return obj1.frame.origin.x
let visibleViews = self.scrollView.visibleViews().sorted(by: {$0.frame.origin.x > $1.frame.origin.x} )
我改为:
[visibleViews sortUsingComparator:^NSComparisonResult(UIView *obj1, UIView *obj2) { return obj1.frame.origin.x > obj2.frame.origin.x; }];
我想对值进行排序,将带有较大xOrigin的视图放在第一位(因此数组中的第一项将是屏幕右侧的视图)。但是我没有得到预期的结果。sortUsingComparator块的返回类型是
NSComparisonResult
。但是您的实现正在返回一种类型的BOOL
一种解决办法是使用:
[visibleViews sortUsingComparator:^NSComparisonResult(UIView *obj1, UIView *obj2) {
return [@(obj1.frame.origin.x) compare:@(obj2.frame.origin.x)];
}];
请注意,完整的翻译应为:
NSArry *visibleViews = [[self.scrollView visibleViews] sortedArrayUsingComparator:^NSComparisonResult(UIView *obj1, UIView *obj2) {
return [@(obj1.frame.origin.x) compare:@(obj2.frame.origin.x)];
}];
“但我没有得到预期的结果。”这不是建设性的。输入、预期输出和实际输出是什么?请贴一张–您是否知道Swift代码返回已排序的数组,而Objective-C代码将数组排序到位?使用
运算符不会给出所需的NSComparisonResult
结果。