在我的Swift项目中加载本地.scpt文件会导致错误

在我的Swift项目中加载本地.scpt文件会导致错误,swift,macos,applescript,Swift,Macos,Applescript,我正在测试一个Mac应用程序,试图加载我的hello.scpt文件,该文件位于/scripts目录下的Xcode项目中 # even though it's in the scripts folder, `path` will be nil unless the resource value is "hello" let path = Bundle.main.path(forResource: "hello", ofType: "scpt&quo

我正在测试一个Mac应用程序,试图加载我的
hello.scpt
文件,该文件位于
/scripts
目录下的Xcode项目中

# even though it's in the scripts folder, `path` will be nil unless the resource value is "hello"
let path = Bundle.main.path(forResource: "hello", ofType: "scpt")
let url = URL(fileURLWithPath: path!)
let scriptObject = try? NSUserAppleScriptTask(url: url)
scriptObject?.execute { handler in
     print(handler)
}
错误:

可选(错误域=NSCOCAERRORDOMAIN代码=257“文件 “hello.scpt”无法打开,因为您没有访问的权限 查看它。” UserInfo={NSURL=file:///Users/me/Library/Developer/Xcode/DerivedData/app-gidwjssyedvwuyfcncsjkfroqdjp/Build/Products/Debug/myApp.app/Contents/Resources/test.scpt, NSLocalizedFailureReason=脚本文件不在应用程序脚本中 文件夹})


我尝试了下面瓦迪安的回答,创建了一个名为
NSApplicationScriptsDirectory
的文件夹,这看起来很奇怪。还尝试在
Info.plist
NSApplicationScriptsDirectory中指定为键,并将
/scripts/
文件的不同变体指定为键,但此处没有成功

这是一个简单的沙盒应用程序,带有Hello World脚本,只需将“Hello World”打印到
stdout

如何加载此AppleScript并使其在没有错误的情况下工作

谢谢


编辑:我还尝试将其作为
hello.scpt
放入我的
~/Library/Scripts
文件夹中,但这也不起作用

错误很明显:

脚本文件不在应用程序脚本文件夹中



nsUserAppleScript任务
类用于从应用程序运行AppleScript脚本。它旨在执行用户提供的脚本,并将在应用程序的沙箱(如果有)之外执行它们


该类不用于执行内置于应用程序中的脚本;为此,请使用一个NSTask类如果应用程序是沙盒,则脚本必须位于
NSApplicationScriptsDirectory
文件夹中。沙盒应用程序可以读取但不能写入此文件夹

如果只需要执行脚本而不考虑输入或输出,请使用
NSUserScriptTask
,它可以执行任何特定类型的脚本。如果需要对脚本的输入或输出进行特定控制,请使用此类


错误很明显:

脚本文件不在应用程序脚本文件夹中



nsUserAppleScript任务
类用于从应用程序运行AppleScript脚本。它旨在执行用户提供的脚本,并将在应用程序的沙箱(如果有)之外执行它们


该类不用于执行内置于应用程序中的脚本;为此,请使用一个NSTask类如果应用程序是沙盒,则脚本必须位于
NSApplicationScriptsDirectory
文件夹中。沙盒应用程序可以读取但不能写入此文件夹

如果只需要执行脚本而不考虑输入或输出,请使用
NSUserScriptTask
,它可以执行任何特定类型的脚本。如果需要对脚本的输入或输出进行特定控制,请使用此类


NSApplicationScriptsDirectory
是应用程序的用户脚本文件夹的
NSSearchPathDirectory
枚举,即~/Library/application scripts/。谢谢@red\u-meane。我刚刚在
~/Library/Application Scripts/com.zackshapiro.myApp
目录下添加了脚本,但仍然得到相同的错误
nsusAppleScriptTask
旨在从应用程序运行用户提供的应用程序描述,而不是应用程序中内置的脚本。看瓦迪安回答中的链接。是的,我明白了。我一直在阅读文档,但有些东西似乎无法正常工作。我只是想运行一个我写的脚本,它将一个简单的“helloworld”写到
stdout
。我希望能有人帮我做这件事。非常感谢:)
NSApplicationScriptsDirectory
是应用程序的用户脚本文件夹的
NSSearchPathDirectory
枚举,即~/Library/application scripts/。谢谢@red\u nerge。我刚刚在
~/Library/Application Scripts/com.zackshapiro.myApp
目录下添加了脚本,但仍然得到相同的错误
nsusAppleScriptTask
旨在从应用程序运行用户提供的应用程序描述,而不是应用程序中内置的脚本。看瓦迪安回答中的链接。是的,我明白了。我一直在阅读文档,但有些东西似乎无法正常工作。我只是想运行一个我写的脚本,它将一个简单的“helloworld”写到
stdout
。我希望能有人帮我做这件事。非常感谢:)