Каков наилучший способ преобразовать этот метод сортировки target-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 (поэтому первым элементом в массиве будет представление в правой части экрана). Но я не получаю ожидаемого результата.
Использование оператора > не дает требуемого NSComparisonResult результата.





Тип возвращаемого значения блока 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)];
}];