首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Scripting-Bridge中访问SBElementArray内容

从Scripting-Bridge中访问SBElementArray内容
EN

Stack Overflow用户
提问于 2017-03-06 21:22:18
回答 1查看 348关注 0票数 1

我一直试图在快速代码中使用iTunes.h SBElementArray头中定义的各种ScriptingBridge生成器,例如:

  • 播放列表列表:(SBElementArray<iTunesPlaylist *> *) playlists;
  • 与轨道相关联的艺术品列表:(SBElementArray<iTunesArtwork *> *) artworks;

但是,当我尝试使用与这些数组中包含的类型相关联的方法时:

代码语言:javascript
复制
let playlists: SBElementArray = iTunes.playlists()
if let playlist = playlists[0] as? iTunesPlaylist {
    print(playlist.name)
}

我得到一个编译错误:

代码语言:javascript
复制
Undefined symbols for architecture x86_64:
 "_OBJC_CLASS_$_iTunesPlaylist", referenced from:
  objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

这似乎仅限于SBElementArray,因为使用以下内容访问当前轨道名称没有问题:

代码语言:javascript
复制
let track: iTunesTrack = iTunes.currentTrack;
print(track.name)

我还猜测这与我试图在代码中从“anyObject”到“iTunesPlaylist”的类型转换有关(我认为我需要bale来访问播放列表内容或我想要显示的任何艺术品),因为以下代码:

代码语言:javascript
复制
let playlists: SBElementArray = iTunes.playlists()
print(playlists[0])
print(type(of: playlists[0]))

合情合理地返回:

代码语言:javascript
复制
<ITunesPlaylist @0x6080000402d0: ITunesPlaylist 0 of application "iTunes" (93931)>
ITunesPlaylist
EN

回答 1

Stack Overflow用户

发布于 2018-10-08 19:03:13

下传正在尝试创建一个可选的,并初始化一个不允许且不存在于链接器中的iTunesPlaylist。强制它,因为你一直知道它是一个iTunesPlaylist或检查类型。

代码语言:javascript
复制
if playlists.count > 0 {
    let playlist : = playlists[0]
    if playlist is iTunesPlaylist {
        print(playlist.name)
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42635808

复制
相关文章

相似问题

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