MPNowPlayingInfoCenter现在在Swift 2中发布信息错误

时间:2015-10-09 20:11:51

标签: ios swift2 mpnowplayinginfocenter

这适用于Swift 1,但在Swift 2中报告错误:

let image:UIImage = UIImage(named: getStringForLanguage(french: "lock_en", english: "lock_fr.") as! String)!
let albumArt = MPMediaItemArtwork(image: image)
let songInfo: NSMutableDictionary = [
    MPMediaItemPropertyTitle: "",
    MPMediaItemPropertyArtist: "",
    MPMediaItemPropertyArtwork: albumArt
]


MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo = songInfo // this reports the error

错误讯息:

  

无法将类型'NSMutableDictionary'的值赋给类型'[String:AnyObject]的值?'

1 个答案:

答案 0 :(得分:2)

你完全按照我的评论。 :)

我的意思是.nowPlayingInfo的类型现在是Swift词典[String : AnyObject]?,而不是基金会的NSMutableDictionary

由于Swift 2的编译器正确地推断出字典的类型,因此无需声明类型。

只需写下:

let songInfo = [
    MPMediaItemPropertyTitle: "",
    MPMediaItemPropertyArtist: "",
    MPMediaItemPropertyArtwork: albumArt
]

如果您需要明确,那么正确的类型不是Dictionary(虽然它有效)但是[String : AnyObject]?

let songInfo: [String: AnyObject]? = [
    MPMediaItemPropertyTitle: "",
    MPMediaItemPropertyArtist: "",
    MPMediaItemPropertyArtwork: albumArt
]

该类型是可选的,因为.nowPlayingInfo属性可以设置为nil。