Swift 2 中的 MPNowPlayingInfoCenter nowPlayingInfo 错误

MPNowPlayingInfoCenter nowPlayingInfo error in Swift 2

这适用于 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

错误信息:

Cannot assign a value of type 'NSMutableDictionary' to a value of type '[String : AnyObject]?'

你完全听懂了我的评论。 :)

我的意思是 .nowPlayingInfo 的类型现在是 Swift 字典 [String : AnyObject]?,而不是来自 Foundation 的 NSMutableDictionary

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

随便写:

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

如果您需要明确,正确的类型不是 Dictionary(尽管它有效),而是 [String : AnyObject]?:

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

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