Какой правильный синтаксис для использования Publishers.debounce() в Swift Combine?
В видео Apple WWDC 2019 года Swift Combine in Practice
они демонстрируют, используя debounce
издатель, чтобы замедлить скорость сообщений.
return $username
.debounce(for: 0.5, scheduler: RunLoop.main)
.removeDuplicates()
.eraseToAnyPublisher()
Однако всякий раз, когда я пытаюсь использовать его подобным образом, я получаю следующую ошибку:
Невозможно вызвать 'debounce' со списком аргументов типа '(для: Double, scheduler: RunLoop)'
debounce()
подпись это:
public func debounce<S>(for dueTime: S.SchedulerTimeType.Stride,
scheduler: S,
options: S.SchedulerOptions? = nil) ->
Publishers.Debounce<Self, S> where S : Scheduler
SchedulerTimeType.Stride
кажется, что его можно инициализировать с помощью числового значения, но оно не работает для меня или моя неопытность в Swift Generics демонстрируется.
Как правильно это назвать?
редактировать
Дубликат этого вопроса...
Поиск общих слов, таких как "Объединить", на данный момент довольно сложен...
macOS 10.15, Xcode 11
1 ответ
Документированный debounce<S>
оператор принимает тип S.SchedulerTimeType.Stride
который выглядит примерно так:
let sub = NotificationCenter.default
.publisher(for: NSControl.textDidChangeNotification, object: filterField)
.debounce(for: .milliseconds(500), scheduler: RunLoop.main)
.subscribe(on: RunLoop.main)
.assign(to:\MyViewModel.filterString, on: myViewModel)