Я знаю, что этот вопрос есть во всем Stack Overflow, но, тем не менее, большинство из них старые и не связаны с тем, что я собираюсь задать здесь.
Итак, у меня есть массив с AVPlayerItems
и AVQueuePlayer
. Сначала я установил AVQueuePlayer для воспроизведения элементов массива:
func mediaPicker(mediaPicker: MPMediaPickerController!, didPickMediaItems mediaItemCollection: MPMediaItemCollection!) {
mediaItems = mediaItemCollection.items
for thisItem in mediaItems as [MPMediaItem] {
var itemUrl = thisItem.valueForProperty(MPMediaItemPropertyAssetURL) as? NSURL
var playerItem = AVPlayerItem(URL: itemUrl)
mediaArray.append(playerItem)
}
updateMetadata()
audioPlayer = AVQueuePlayer(items: mediaArray)
self.dismissViewControllerAnimated(true, completion: nil)
}
Но, когда пользователь, например, добавляет новый элемент или удаляет его, я пытаюсь обновить плеер (так же, как я его установил в первую очередь), но он выдает ошибку. Я хочу знать, есть ли способ обойти это или какое-либо решение. Вот как пользователь удаляет песню:
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == UITableViewCellEditingStyle.Delete{
mediaArray.removeAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
audioPlayer = AVQueuePlayer(items: mediaArray) //here gives the error
}
}
Я убиваю себя из-за этого, поэтому, если кто-то может мне помочь, я был бы признателен.