Как найти ошибки приложения iOS из-за устаревшего кода? - PullRequest
0 голосов
/ 12 сентября 2018

После выбора видео из библиотеки фотографий я получил NSURL видео с info[UIImagePickerControllerReferenceURL].

    if let selectedVideo = info[UIImagePickerControllerReferenceURL] as? NSURL, let videoURLString = selectedVideo.absoluteString {
        print(videoURLString) // print unwrapped url as string
        videoView.configure(url: videoURLString)
        videoView.isLoop = true
        videoView.play()
    } else {
        print("Error in unwrapping selected video as a local file URL!")
    }

Я правильно развернул его и настроил свой UIView для воспроизведения после прохождения строки. Вот функция настройки videoView.

    func configure(url: String) {
    if let videoURL = URL(string: url) {
        player = AVPlayer(url: videoURL)
        playerLayer = AVPlayerLayer(player: player)
        playerLayer?.frame = bounds
        playerLayer?.videoGravity = AVLayerVideoGravity.resize
        if let playerLayer = self.playerLayer {
            layer.addSublayer(playerLayer)
        }
        NotificationCenter.default.addObserver(self, selector: #selector(reachTheEndOfTheVideo(_:)), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: self.player?.currentItem)
    }
}

Это отлично работало в симуляторе на iPhone 8 Plus, но после запуска на моем собственном iPhone 8 Plus, UIView, который будет воспроизводить видео, не загружался, и при этом я не получал сообщение об ошибке. Позже я понял, что UIImagePickerControllerReferenceURL устарело с iOS 11.0, хотя в документации указано, что он должен поддерживать iOS 4.1+. enter image description here

Я использовал UIImagePickerControllerMediaURL вместо , затем , наконец, он работал на моем телефоне, а также на симуляторе.

Я тоже не получал сообщение об ошибке, и print(videoURLString) правильно печатал URL ресурса. Чтобы найти это потребовалось довольно много времени. Как я могу лучше защитить приложение от подобных ошибок при устранении неполадок? Если я не могу использовать необязательную привязку, как еще можно напечатать ошибку для ошибок такого рода?

...