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

问题描述 投票:0回答:1

我正在测试一个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 = file:/// Users / me / Library / Developer / Xcode / DerivedData / app-gidwjssyedvwuyfcncsjkfroqdjp / Build / Products / Debug / app.app / Contents / Resources / test.scpt,NSLocalizedFailureReason =脚本文件不在应用程序脚本文件夹中。})

我尝试创建一个scripts文件夹,在那里移动我的文件并从/scripts/test加载资源,但这也无效。

如何加载AppleScript?谢谢。

swift macos applescript
1个回答
1
投票

错误很明显:

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


来自documentation of NSUserAppleScriptTask

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.