我正在使用nsuserscripttask运行用户放在application scripts目录中的脚本。但是,我发现很难找出nsuserscripttask接受的已知脚本类型,docs也没有多大帮助……有什么想法吗?
到目前为止,我试过这些:
.sh页
.应用脚本
.scpt文件
.scptd文件
.txt文件
无法让它们中的任何一个工作(方法返回nil)
编辑:
我忘了把错误包括在内!我真傻…下面是日志上打印的内容:
Error Domain=NSCocoaErrorDomain Code=259 "The file “Untitled.applescript” couldn’t be opened because it isn’t in the correct format." UserInfo=0x100121f50 {NSURL=file://localhost/Users/path to file/Untitled.applescript, NSFilePath=/Users/path to file/Untitled.applescript}
最佳答案
The documentation for NSUserScriptTask声明直接实例化该类将在任何有效文件上工作并返回适当类型的任务:
返回的对象将属于特定的子类之一(NSUserUnixTask、NSUserAppleScriptTask和NSUserAutomatorTask),如果文件与任何已知类型都不匹配,则返回的对象将属于nil
。
如果从子类调用,结果将是该类或nil
。
实际上,我发现(截至10.8.2)nsuserscripttask无条件地返回nil
和一个“这是什么,我甚至没有”错误。似乎您需要自己实例化正确的任务子类。可能值filing a bug。
要测试文件是否可用作脚本任务(例如,在开放面板验证方法中),我建议尝试实例化这三个类中的每一个,如果其中任何一个类成功,则返回YES
,如果所有类都失败,则返回NO
。