[英]Loading a local .scpt file in my Swift project causes error
我正在測試一個 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)
}
錯誤:
可選(錯誤域=NSCocoaErrorDomain Code=257“無法打開文件“hello.scpt”,因為您沒有查看它的權限。” UserInfo={NSURL=file:///Users/me/Library/ Developer/Xcode/DerivedData/app-gidwjssyedvwuyfcncsjkfroqdjp/Build/Products/Debug/myApp.app/Contents/Resources/test.scpt, NSLocalizedFailureReason=腳本文件不在應用程序腳本文件夾中。})
我在下面嘗試了 vadian 的響應,創建了一個名為NSApplicationScriptsDirectory
的文件夾,這看起來很奇怪。 還嘗試在Info.plist
NSApplicationScriptsDirectory
指定密鑰,將./scripts/
文件的不同變體指定為密鑰,但這里沒有運氣。
這是一個簡單的沙盒應用程序,帶有一個 Hello World 腳本,它只是將“Hello world”打印到stdout
我怎樣才能加載這個 AppleScript 並讓它在沒有錯誤的情況下工作?
謝謝!
編輯:我也嘗試將它作為hello.scpt
放在我的~/Library/Scripts
文件夾中,但這也不起作用
錯誤很明顯:
腳本文件不在應用程序腳本文件夾中
NSUserAppleScriptTask
類旨在從您的應用程序運行 AppleScript 腳本。 它旨在執行用戶提供的腳本,並將在應用程序的沙箱之外執行它們(如果有)。該類不打算執行內置於應用程序中的腳本; 為此,請使用 NSTask 類之一。 如果應用程序被沙盒化,那么腳本必須在
NSApplicationScriptsDirectory
文件夾中。 沙盒應用程序可以讀取但不能寫入此文件夾。如果您只需要執行腳本而不考慮輸入或輸出,請使用
NSUserScriptTask
,它可以執行任何特定類型。 如果您需要對腳本的輸入或輸出進行特定控制,請使用此類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.