Ошибка RxSwift при использовании сортировки по переменной

#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. вы правы. Я вызывал метод в асинхронной задаче. Спасибо