#io #ios10 #rx-swift
#io #ios10 #rx-swift
Вопрос:
У меня есть такой массив:
var arrayPoints:Variable<[Point]>?
Позже пользователь может отсортировать список следующим образом:
func orderPointsByDistance(){
self.arrayPoints?.value.sort{ $0.stringDistance.compare($1.stringDistance) == .orderedAscending }
}
Однако я получаю эту ошибку:
fatal error: Executing on backgound thread.
Please use MainScheduler.instance.schedule to schedule work on main thread.: file /Users/dasilvans/Desktop/GeoPlay/Pods/RxSwift/RxSwift/Rx.swift, line 23
В некотором смысле я осознаю ошибку, но не знаю, как ее решить.
Есть предложения?
Ответ №1:
попробуйте это, я думаю, что вы блокируете rx, когда делаете это
let stuff = Array(self.arrayPoints?.value)
stuff.sort{ $0.stringDistance.compare($1.stringDistance) == .orderedAscending }
self.arrayPoints?.value = stuff
или это вопрос
DispatchQueue.main.async {
}
Комментарии:
1. вы правы. Я вызывал метод в асинхронной задаче. Спасибо