Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Appscript v/s脚本桥v/s自定义AppleScript_Ios_Ruby_Applescript_Itunes_Scripting Bridge - Fatal编程技术网

Ios Appscript v/s脚本桥v/s自定义AppleScript

Ios Appscript v/s脚本桥v/s自定义AppleScript,ios,ruby,applescript,itunes,scripting-bridge,Ios,Ruby,Applescript,Itunes,Scripting Bridge,我希望通过我的ruby脚本访问iTunes应用程序,看看所有的3个,我不知道我应该选择哪一个。似乎不再支持Appscript,因此我想将其从选项列表中删除。我只剩下脚本桥和自定义AppleScript(制作我自己的脚本) 在网上阅读了缺陷和糟糕的文档后,我很困惑应该从哪一个开始 有经验的用户请建议哪种可能是最好的,或者是否有任何其他脚本可能会有所帮助 谢谢 我已经完成了这三个步骤,但是是从Objective C作为调用语言,而不是ruby AppleScript。您可以使用osascript从r

我希望通过我的ruby脚本访问iTunes应用程序,看看所有的3个,我不知道我应该选择哪一个。似乎不再支持Appscript,因此我想将其从选项列表中删除。我只剩下脚本桥和自定义AppleScript(制作我自己的脚本)

在网上阅读了缺陷和糟糕的文档后,我很困惑应该从哪一个开始

有经验的用户请建议哪种可能是最好的,或者是否有任何其他脚本可能会有所帮助


谢谢

我已经完成了这三个步骤,但是是从Objective C作为调用语言,而不是ruby

AppleScript。您可以使用
osascript
从ruby编写和调用AppleScript。AppleScript在使用AppleScript编辑器进行交互式开发方面有很大的支持。这很有效。但是…通过osascript调用是很麻烦的,而且每次与iTunes通话时都会调用一个额外的进程。您还必须解析
osascript
的输出——这不是什么大问题,但肯定会让您远离真正想做的事情

脚本桥。这就剩下了脚本桥和appscript。脚本桥的好处是它是苹果支持的官方代码。脚本桥有它的缺点,但它肯定能工作,而且工具支持很好。然而,我不知道您如何将其与ruby集成在一起——其他人可能想在这里发表评论

appscript。Appscript具有良好的文档和强大的代表性,是一个优秀的桥接解决方案。Matt Neuberg已经将appscript迁移到github(),明确的目标是使用该项目的ruby部分。另一个fork()添加了进一步的修复,这就是我要开始的地方。我自己()已经更新了Objective-C(大约是Xcode 6 beta 5),但我还没有触及ruby方面

脚本桥与appscript的比较。从用户的角度来看,我注意到appscript和脚本桥之间的一个区别是appscript更明确(好),但也更详细(不好)。下面是一个获取对象的
name
属性的示例(伪Obj C);您可以显式执行
get
send

id result = [[[appscriptObject name] get] send];
而在脚本桥中,有一个隐式的惰性计算,所以它看起来更像:

id result = [sbObject name];
在生成的头文件中还对类型信息进行了不同的处理。我相信脚本桥保留了更好的类型信息

Appscript在错误处理方面似乎更好,例如,当某些内容不可用时,它会告诉您。使用脚本桥,您似乎可以获得一个对象,在使用它之后,您必须查询它以查看
lastError
是什么。我发现这种编码模式很难看

向后看?正如您所指出的,问题在于appscript可能最适合被视为“向后看的技术”。如果您采用它,您将考虑自己支持/修复appscript中的任何问题,或者依赖他人的修复。尽管它在今天(OSX10.9)似乎工作得很好,但在将来,您可以预期它会损坏或需要进一步维护以保持其运行。另一方面,由于您拥有源代码,您可以自己解决问题。脚本桥中的一个bug将从您的手中消失

如果你想改变这一点并向前看,你可能想看看苹果公司用JavaScript作为新的OSA语言为约塞米蒂做了什么。然而,这偏离了您最初的问题,即关于ruby和iTunes的问题

底线。这里有各种权衡

AppleScript。为了安全起见

脚本桥。好的中间地带?但不知道如何使用ruby

应用脚本。适合业余爱好者/DIY爱好者


JavaScript。对于早期采用者。

我只是突然想到了这个话题。我正在使用10.11(El Capitan),希望从ruby访问iTunes。我希望避免使用osascript

ruby的脚本桥已经正式失效(在apple.com上的某个地方阅读),10.10和10.11中没有包含脚本桥。我唯一的选择是rb appscript gem。但是,它不适用于Ruby 2.2.1。我需要在开始时关注这篇文章,现在它工作得很好


希望它能帮助别人。

太棒了!!谢谢你帮我打这个Poulsbo!我认为脚本桥可以与Ruby脚本一起工作。我确实在网上看到了一些关于它的例子。我现在想先试试,然后再考虑使用AppleScript路线。我要编写的任何逻辑都会在调度器上执行,也就是说,它每天也可以运行大约100次。如果我使用AppleScript,我会担心脚本的性能。