带有 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 ?? ""
这样你总是以一个字符串结束,如果有问题它可能是空的,你不会崩溃。
我的 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 ?? ""
这样你总是以一个字符串结束,如果有问题它可能是空的,你不会崩溃。