【问题标题】:Using scripting Bridge with iTunes将脚本桥与 iTunes 结合使用
【发布时间】:2014-01-20 16:18:30
【问题描述】:

我是 Objective-C 的新手。我现在正在尝试获取所选曲目的歌曲信息。但我不能。

我发现下面的代码

iTunesFileTrack *cuTrack = [iTunesApp.currentTrack get];
NSLog(@"result = %@",cuTrack);

输出当前曲目的参考(?)。喜欢:

2014-01-21 00:07:09.908 CommunicateWithiTunes[43052:303] result = <ITunesFileTrack @0x60800005de20: ITunesFileTrack id 12825 of ITunesUserPlaylist id 12773 of ITunesSource id 74 of application "iTunes" (166)>

所以它可以像这样重复使用:

NSLog(@"name = %@", cuTrack.name);
NSLog(@"location = %@", cuTrack.location);

但是如果我将代码重写为选择:

iTunesFileTrack *selectedTrack = [iTunesApp.selection get];
NSLog(@"result = %@",selectedTrack);

输出所选曲目的文本(?),例如:

2014-01-21 00:15:40.753 CommunicateWithiTunes[43145:303] result = (
 "<ITunesFileTrack @0x61000044fe70: ITunesFileTrack id 12825 of ITunesUserPlaylist id 12773 of ITunesSource id 74 of application \"iTunes\" (166)>"

所以结果不能重复使用。

为什么会出现这种差异?或者谁能​​告诉我获取所选曲目信息的正确方法?

【问题讨论】:

    标签: objective-c scripting-bridge


    【解决方案1】:

    选择始终是一个数组(就像在 AppleScript 中一样)。现在只需循环遍历数组的项目。在您的示例中,只有一个。这就是控制台日志输出中的括号告诉您的内容:您的第二个result 是一个数组,由一个项目组成,该项目是对文件轨道的引用,它本身与您的第一个result 相同。

    【讨论】:

    • 我还应该说:欢迎使用 Objective-C!如果您想在继续深入之前暂停并学习一下 Objective-C,我的书会教给您,从 C 开始,逐步构建到 Objective-C:apeth.com/iOSBook/ch01.html 这本书面向 iOS,而不是 Mac OS X,但两者的语言完全相同,因此这些章节可能对您有所帮助。
    • 如果您来自 AppleScript,另一种选择不是使用 Scripting Bridge,而是在 Cocoa 应用程序中使用 AppleScript 编写脚本。这就是 AppleScript-Objective C Bridge 让您做的事情。您可以使用 AppleScript 语言编写代码,但也可以在需要时使用 Objective-C。 macosxautomation.com/applescript/apps
    • 谢谢马特!!我确认我的第二个例子是数组。另外,谢谢你教我你的书。是的,我来自 AppleScript。但我想在学习中尝试 Scripting Bridge。
    • @xanadu:Scripting Bridge 既不是一个好的 ObjC/Cocoa 技术,也不是一个好的 AppleScript 技术,所以如果你想学习,可能不是一个好的起点。使用 ASOC 桥的优势在于它允许 AppleScript 做它擅长的事情(应用程序自动化),而 ObjC 做它擅长的事情(大多数其他事情)。 ASOC 并不完美,但它足以完全在 AS 中编写更简单的程序,或者使用 AS 和 ObjC 混合编写更复杂的应用程序,两者之间没有太多的阻抗不匹配。 Shane Stanley 的书(来自 Matt 的链接)是一个很好的起点。
    • 无论如何,@foo,AppleScript 本身就是一门糟糕的语言(我说即使我写了一本关于它的书!),无论如何,为什么不让 xanadu 尝试他想尝试的东西呢?学他想学的?
    猜你喜欢
    • 1970-01-01
    • 2010-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多