3

这适用于 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]?”类型的值

4

1 回答 1

2

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

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

而且由于 Swift 2 的编译器正确地推断出字典的类型,所以不需要声明类型。

写吧:

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

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

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

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

于 2015-10-09T20:33:40.993 回答