MPMediaItemPropertyTitle с MPMediaPlayer и Podcast вызывает фатальную ошибку

Мой MPMediaplayer работает довольно хорошо для музыки, но когда я начинаю работать с подкастами, все по-другому.

Я пытаюсь получить две вещи: 1) Название Название Подкаста ("Эта американская Жизнь") 2) Название Эпизода ("Мой Праздник")

Эта строка кода отлично работает для получения заголовка подкаста:

let podTitle:String = (myMP.nowPlayingItem?.podcastTitle)!

Однако эта строка должна получить название эпизода:

let episode:String = myMP.nowPlayingItem?.value(forProperty: "MPMediaItemPropertyTitle") as! String

но вызывает сбой с этой ошибкой:

фатальная ошибка: неожиданно найден ноль при развертывании необязательного значения

Как я могу получить заголовок эпизода для данного подкаста?

1 ответ

Решение

MPMediaItemPropertyTitle не является ключом свойства строки; это имя константы, значением которой является ключ свойства. Итак, где у вас есть

let episode:String = 
  myMP.nowPlayingItem?.value(forProperty: "MPMediaItemPropertyTitle") as! String

... убрать кавычки:

let episode:String = 
  myMP.nowPlayingItem?.value(forProperty: MPMediaItemPropertyTitle) as! String

Я думаю, то, что вы делаете, все еще очень глупо (вы просите потерпеть крах), но, по крайней мере, таким образом у вас есть шанс на успех. То, что я делаю, на самом деле больше похоже на это:

let temp = myMP.nowPlayingItem?.value(forProperty: MPMediaItemPropertyTitle)
let episode = temp as? String ?? ""

Таким образом, вы всегда получите строку, которая может быть пустой, если возникнет проблема, и вы не потерпите крах.

Другие вопросы по тегам