Преобразовать быстрый сортированный метод в target-c - PullRequest
0 голосов
/ 24 мая 2019

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

1 Ответ

1 голос
/ 24 мая 2019

Тип возврата блока 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)];
}];
...