Добрый день товарищи разработчики.
Столкнулся с проблемой миграции от ObservableObject к Observable.
У Apple есть великолепная инструкция по миграции, и даже почти вопросов не вызывает. Но в ней нет информации, как сохранить код из Combine.
Вот пример класса с протоколом ObservableObject:
class RawImageRenderer: NSObject, MTKViewDelegate, ObservableObject {
@Published var scale: CGFloat = 1.0
var cancellable: Set<AnyCancellable> = []
let device: MTLDevice
let view: MTKView
override init() {
self.device = MTLCreateSystemDefaultDevice()!
self.view = MTKView(frame: .zero, device: self.device)
self.view.colorPixelFormat = .rgba16Float
super.init()
if let layer = self.view.layer as? CAMetalLayer { layer.wantsExtendedDynamicRangeContent = true }
$scale
.dropFirst()
.debounce(for: 0.2, scheduler: RunLoop.main)
.sink { _ in
self.view.preferredFramesPerSecond = 2
}
.store(in: &cancellable)
}
}
Вопрос состоит в следующем - как сохранить конструкции, относящиеся к работе с Combine типа .sink, .debounce, .store и тд ?
Нигде в документации не нашел. Пока вижу только расписывать функционал при помощи .get {} .set{}
Может кто сталкивался с таким? Буду благодарен за подсказки