Нет, вы не можете так предполагать.Я обычно полагаюсь на клавишу @"duration"
, чтобы создать AVPlayerItem
и начать воспроизведение, так как загрузка @"playable"
, как правило, еще не гарантирует, что ресурс готов.Затем я порождаю таймер, чтобы периодически проверять, загружены ли другие ключи, такие как @"tracks"
, или не похожи на те, что упоминала Элиз ван Лоидж.
Кроме того, примечание - не забывайте, что completionHandler
in loadValuesAsynchronouslyForKeys
вызывается в произвольном фоновом потоке.Вам придется отправить его в основной поток, если вы имеете дело с пользовательским интерфейсом или AVPlayerLayer.