在我的Swift项目中加载本地.scpt文件会导致错误
我正在测试一个Mac应用程序,试图加载我的在我的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
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
。我希望能有人帮我做这件事。非常感谢:)