6

在目标 c 中,我一直在使用这样的代码来更新 MPNowPlayingInfoCenter:

[[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo: 
    @{ MPMediaItemPropertyArtist : @"Artist!",
        MPMediaItemPropertyTitle : @"Title! }];

但在 Swift 中,似乎无法识别函数“setNowPlayingInfo”:

MPNowPlayingInfoCenter.defaultCenter()....  // Can't identify 'setNowPlayingInfo()'

有什么我想念的吗?

4

3 回答 3

5

在 Swift 中,getter/setter 的工作方式不同。由于没有像 ObjC 中那样的属性,因此没有为您自动生成的 setter/getter。您应该直接访问该变量。

在您的情况下,请使用:

MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo = [MPMediaItemPropertyArtist : "Artist!",  MPMediaItemPropertyTitle : "Title!"]
于 2014-06-17T18:58:45.597 回答
1

Swift 2,这也有效:

let songInfo: [String:AnyObject] = [
         MPMediaItemPropertyTitle: mySoundTrack.TrackName,
         MPMediaItemPropertyArtist: String(mySoundTrack.TrackID),
         MPMediaItemPropertyArtwork: albumArt
]

MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo = songInfo
于 2015-10-10T00:37:12.507 回答
0

@Jack 之前的回答不再按原样工作,需要进行一些修改。

Swift 3 编译器抱怨两件事。

  • String 不能直接转换为 AnyObject,因此必须将两个字典条目值从 String 转换为 AnyObject。
  • defaultCenter()已重命名为default().

所以一个可行的代码看起来像这样:

MPNowPlayingInfoCenter.default().nowPlayingInfo = [MPMediaItemPropertyArtist : "Artist!" as AnyObject,  MPMediaItemPropertyTitle : "Title!" as AnyObject]
于 2017-07-04T15:47:57.550 回答