Как изменить тему, используя комбайн Publisher? - PullRequest
2 голосов
/ 11 июня 2019

Я использую Combine и SwiftUI для выполнения некоторых асинхронных операций, суть в том, что я не знаю, как получить ответ от асинхронной операции в главном потоке. apple doc говорит, что его можно использовать RunLoop.main, но в настоящее время в Swift 5.0 он не является планировщиком.Так что есть идеи по этому поводу?

Я пытался использовать в соответствии с Apple Doc, но не повезло.

anyPublisher
    .receiveOn(on: RunLoop.main)

1 Ответ

3 голосов
/ 11 июня 2019

Combine - на момент написания статьи - не полностью интегрирован в Foundation.

В соответствии с Xcode 11 Beta Примечания к выпуску :

Интеграция с фундаментом для платформы Combine недоступна. Следующие интеграции Foundation и Grand Central Dispatch с Combine недоступны: KeyValueObserving, NotificationCenter, RunLoop, OperationQueue, Timer, URLSession, DispatchQueue, JSONEncoder, JSONDecoder, PropertyListEncoder, PropertyListDecoder и оболочка свойства @Published. (51241500)


Согласно последней Xcode 11 beta (2), это было исправлено, поэтому ожидайте, что ваш код будет работать правильно.

Доступна интеграция с фундаментом для платформы Combine. Доступны следующие интеграции Foundation и Grand Central Dispatch с Combine: KeyValueObserving, NotificationCenter, RunLoop, OperationQueue, Таймер, URLSession, DispatchQueue, JSONEncoder, JSONDecoder, PropertyListEncoder, PropertyListDecoder и оболочка свойств @Published. (51241500) * * тысяча двадцать-одна

Спасибо @Martin R и @silicon_valley за обновление .

...