这适用于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]的值?'
答案 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。