首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Swift中更新MPNowPlayingInfoCenter?

如何在Swift中更新MPNowPlayingInfoCenter?
EN

Stack Overflow用户
提问于 2014-06-17 18:34:30
回答 3查看 5.7K关注 0票数 6

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

代码语言:javascript
复制
[[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo: 
    @{ MPMediaItemPropertyArtist : @"Artist!",
        MPMediaItemPropertyTitle : @"Title! }];

但在Swift中,"setNowPlayingInfo“函数似乎不被识别:

代码语言:javascript
复制
MPNowPlayingInfoCenter.defaultCenter()....  // Can't identify 'setNowPlayingInfo()'

我遗漏了什么吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-17 18:58:45

在Swift中,getter/setter的工作方式不同。由于不再有类似于ObjC的属性,所以没有自动生成的设置器/getter。您应该直接访问变量。

在您的情况下,请使用:

代码语言:javascript
复制
MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo = [MPMediaItemPropertyArtist : "Artist!",  MPMediaItemPropertyTitle : "Title!"]
票数 5
EN

Stack Overflow用户

发布于 2015-10-10 00:37:12

Swift 2,这也适用于:

代码语言:javascript
复制
let songInfo: [String:AnyObject] = [
         MPMediaItemPropertyTitle: mySoundTrack.TrackName,
         MPMediaItemPropertyArtist: String(mySoundTrack.TrackID),
         MPMediaItemPropertyArtwork: albumArt
]

MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo = songInfo
票数 1
EN

Stack Overflow用户

发布于 2017-07-04 15:47:57

“Jack”之前的回答不再是原来的样子,需要做一些修改。

Swift 3编译器抱怨2件事。

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

因此,一个可行的代码如下所示:

代码语言:javascript
复制
MPNowPlayingInfoCenter.default().nowPlayingInfo = [MPMediaItemPropertyArtist : "Artist!" as AnyObject,  MPMediaItemPropertyTitle : "Title!" as AnyObject]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24270973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档