В своем стремлении ответить на этот вопрос я натолкнулся на это в книге.Как получить медиатеку из коллекции MediaPickerController для воспроизведения на AVPlayer?
«MPMediaItem имеет ключ MPMediaItemPropertyAssetURL (или свойство assetURL), значение которого является URL-адресом. Это дает вам ссылку на музыкальный файл на диске, ... получив URL-адрес ресурса MPMediaItem, вы можете использовать этот URL для инициализации AVAudioPlayer, AVPlayer или AVAsset. "
Поэтому я попытался использовать mediaPickerController для получения URL-адреса ресурса.
func mediaPicker(mediaPicker: MPMediaPickerController, didPickMediaItems mediaItemCollection: MPMediaItemCollection) {
guard let mediaItem = mediaItemCollection.items.first else {
NSLog("No item selected.")
return
}
var songURL = mediaItem.valueForProperty(MPMediaItemPropertyAssetURL) as! NSURL
print(songURL)
self.dismissViewControllerAnimated(true, completion: nil)
}
В книге он дает это как пример:
let arr = // array of MPMediaItem
let items = arr.map {
let url = $0.assetURL!
let asset = AVAsset(URL:url)
return AVPlayerItem(asset: asset)
}
self.qp = AVQueuePlayer(items:items)
self.qp.play()
Я не уверен, как получить mediaItemCollection к переменной обр. Использование songURL и MediaItemCollection находится внутри функции picker mediaPicker. Я не могу получить доступ к нему за пределами его функции. Как мне заставить это работать?