【问题标题】:MPNowPlayingInfoCenter nowPlayingInfo error in Swift 2Swift 2 中的 MPNowPlayingInfoCenter nowPlayingInfo 错误
【发布时间】:2016-01-07 21:09:57
【问题描述】:

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

【问题讨论】:

  • 只创建一个 Swift 字典,而不是 NSMutableDictionary。
  • 如果工作,谢谢!最终代码: let songInfo: Dictionary = [ MPMediaItemPropertyTitle: "", MPMediaItemPropertyArtist: "", MPMediaItemPropertyArtwork: albumArt ] MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo = songInfo

标签: ios swift2 mpnowplayinginfocenter


【解决方案1】:

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

我的意思是 .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
]

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

【讨论】:

  • 感谢您的帮助!我在这里明白了一些事情:)
猜你喜欢
  • 2016-04-17
  • 2017-05-31
  • 2013-12-30
  • 2016-03-01
  • 2014-08-07
  • 2016-04-11
  • 1970-01-01
  • 2015-12-08
相关资源
最近更新 更多