带有 MPMediaPlayer 和 Podcast 的 MPMediaItemPropertyTitle 导致致命错误

MPMediaItemPropertyTitle with MPMediaPlayer and Podcast causes Fatal Error

我的 MPMediaplayer 播放音乐效果很好,但当我开始播放播客时,情况就不同了。

我想得到两件事: 1) 播客标题的名称 ("This American Life") 2) 剧集标题 ("My Holiday")

这行代码可以很好地获取播客标题:

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

然而,这一行应该得到剧集标题:

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

但导致崩溃并出现此错误:

fatal error: unexpectedly found nil while unwrapping an Optional value

如何获取给定播客的剧集标题?

MPMediaItemPropertyTitle 不是字符串 属性 键;它是常量的名称,其 value 是 属性 键。所以,你在哪里

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 ?? ""

这样你总是以一个字符串结束,如果有问题它可能是空的,你不会崩溃。