我正在测试一个Mac应用,尝试加载我的Xcode项目中的test.scpt
文件。
let path = Bundle.main.path(forResource: "test", ofType: "scpt")
let url = URL(fileURLWithPath: path!)
let scriptObject = try? NSUserAppleScriptTask(url: url)
scriptObject?.execute { handler in
print(handler)
}
错误:
可选(错误域= NSCocoaErrorDomain代码= 257“该文件 由于您没有权限,“test.scpt”无法打开 看吧。“ 的UserInfo = {NSURL =文件:///Users/me/Library/Developer/Xcode/DerivedData/app-gidwjssyedvwuyfcncsjkfroqdjp/Build/Products/Debug/app.app/Contents/Resources/test.scpt, NSLocalizedFailureReason =脚本文件不在应用程序脚本中 文件夹。})
我尝试创建一个scripts
文件夹,在那里移动我的文件并从/scripts/test
加载资源,但这也不起作用。
如何加载AppleScript?感谢。
答案 0 :(得分:1)
错误很明显:
脚本文件不在应用程序脚本文件夹中
来自documentation of NSUserAppleScriptTask
NSUserAppleScriptTask
类旨在从您的应用程序运行AppleScript脚本。它旨在执行用户提供的脚本,并在应用程序的沙箱之外执行它们(如果有的话)。该类不用于执行应用程序中内置的脚本;为此,使用其中一个NSTask类。 如果应用程序是沙盒,则脚本必须位于
NSApplicationScriptsDirectory
文件夹中。沙盒应用程序可以读取但不写入此文件夹。如果您只需要执行脚本而不考虑输入或输出,请使用
NSUserScriptTask
,它可以执行任何特定类型。如果您需要对脚本的输入或输出进行特定控制,请使用此类。