addPeriodicTimeObserver генерирует ошибку закрытия - PullRequest
1 голос
/ 04 июля 2019

Я следую этому учебнику , в котором объясняется, как создать AVPlayer и использовать его с Swift UI. Я нахожусь в той части, где панель поиска становится индикатором выполнения для видеопроигрывателя.

Итак, следуя этой части, я написал код, показанный в руководстве, но в следующей строке кода,

player.addPeriodicTimeObserver(forInterval: CMTime(seconds: 0.5, preferredTimescale: 600), queue: nil) { time in
            guard let item = self.player.currentItem else{
                return
            }

            self.seekPos = time.seconds / item.duration.seconds
        }

скобка перед time in подчеркнута красным, и я получил следующую ошибку:

Escaping closure captures mutating 'self' parameter

Есть ли способ это исправить? Я хочу, чтобы слайдер стал индикатором видео. addPeriodicTimeObserver находится в init внутри моего struct.

РЕДАКТИРОВАТЬ : Учебное пособие, которое я использую, предназначено для iOS, но я разрабатываю для macOS. Я только что внес изменения, чтобы код из этого руководства работал для macOS.

1 Ответ

1 голос
/ 04 июля 2019

Попробуйте это

player.addPeriodicTimeObserver(forInterval: CMTime(seconds: 0.5, preferredTimescale: 600), queue: nil) {[self] time in
    guard let item = self.player.currentItem else{
        return
    }

    self.seekPos = time.seconds / item.duration.seconds
}

Надеюсь вам помочь.

...