在目标c中,我一直在使用这样的代码来更新MPNowPlayingInfoCenter:
[[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:
@{ MPMediaItemPropertyArtist : @"Artist!",
MPMediaItemPropertyTitle : @"Title! }];
但是在Swift中,它似乎不像函数" setNowPlayingInfo"被认可:
MPNowPlayingInfoCenter.defaultCenter().... // Can't identify 'setNowPlayingInfo()'
我有什么遗失的吗?
答案 0 :(得分:5)
在Swift中,getter / setter的工作方式不同。由于ObjC中没有其他属性,因此没有自动生成的setter / getter。您应该直接访问变量。
在您的情况下,请使用:
MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo = [MPMediaItemPropertyArtist : "Artist!", MPMediaItemPropertyTitle : "Title!"]
答案 1 :(得分:1)
Swift 2,这也有效:
let songInfo: [String:AnyObject] = [
MPMediaItemPropertyTitle: mySoundTrack.TrackName,
MPMediaItemPropertyArtist: String(mySoundTrack.TrackID),
MPMediaItemPropertyArtwork: albumArt
]
MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo = songInfo
答案 2 :(得分:0)
@Jack以前的回答不再有效,需要进行一些修改。
Swift 3编译器抱怨了两件事。
defaultCenter()
已重命名为default()
。所以一个可行的代码看起来像这样:
MPNowPlayingInfoCenter.default().nowPlayingInfo = [MPMediaItemPropertyArtist : "Artist!" as AnyObject, MPMediaItemPropertyTitle : "Title!" as AnyObject]
答案 3 :(得分:-2)
你把它包裹成字符串吗?
var artist = dictionary["artist"]! as String
var title = dictionary["title"]! as String
MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo = [MPMediaItemPropertyArtist : artist, MPMediaItemPropertyTitle : title]