Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将swift排序方法转换为objective-c_Objective C_Swift_Sorting - Fatal编程技术网

将swift排序方法转换为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

转换此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 > 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
结果。