【发布时间】:2014-07-27 18:30:46
【问题描述】:
我正在尝试编写一个用于快速控制 iTunes 的应用程序。但是在初始化应用程序的时候返回一个AnyObject类型的对象,而且必须是iTunesApplication。
此对象不响应 iTunes 的方法和变量。谁知道如何让它工作?
var iTunes = SBApplication.applicationWithBundleIdentifier("com.apple.iTunes")
iTunes.h 标头还包含我需要访问但不能访问的类。 这些类会导致编译错误,就好像它们不在声明的 iTunes.h 中一样。
为什么这件事发生在我身上还不清楚。
通过@class 声明为 iTunes.h 的类的完整列表:
@class iTunesPrintSettings, iTunesApplication, iTunesItem, iTunesAirPlayDevice, iTunesArtwork, iTunesEncoder, iTunesEQPreset, iTunesPlaylist, iTunesAudioCDPlaylist, iTunesLibraryPlaylist, iTunesRadioTunerPlaylist, iTunesSource, iTunesTrack, iTunesAudioCDTrack, iTunesFileTrack, iTunesSharedTrack, iTunesURLTrack, iTunesUserPlaylist, iTunesFolderPlaylist, iTunesBrowseVisual, iTunesWindow, iTunes , iTunes播放列表窗口;
例如,在 Objective-c 中,你会使用类似这样的东西来获取当前曲目
iTunesApplication *iTunes = [SBApplication applicationWithBundleIdentifier:@"com.apple.iTunes"];
NSLog(@"Current song is %@", [[iTunes currentTrack] name]);
但我无法在 swift 中找到等价物。
【问题讨论】:
-
当您执行
println("\(iTunes.className)")时,它会返回“ITunesApplication” -
编译器错误 - “AnyObject 没有名为 className 的成员”
-
是的。我在测试中看到了这一点。我指出,尽管它给出了该错误,但它被归类为 iTunesApplication。我还可以建议您在问题中添加更多细节吗?关于您尝试解决此问题的方法以及如何导入 iTunes.h 文件等。我知道我希望 xcode 能够将其添加到头文件导入文件中,但我从来没有得到。
-
我检查了对象是否响应挑战 iTunes PlayerState。它返回一个数字。同时,当我想引用 iTunes.h @class 表示的类时,会出现编译错误。很奇怪。
-
请将代码添加到您收到回复的答案中以及您收到错误的代码中。这可以帮助任何想要查看此内容的人不要猜测您在做什么。这将鼓励答案。
标签: xcode itunes swift applescript-objc