2017-05-26 41 views
1

如果我有一個JXA源代碼的字符串變量,有沒有辦法從swift運行?看來NSAppleScript只能用於AppleScript源。如何從Swift運行JXA?

回答

-1

爲什麼? JXA在各方面都是一隻狗。如果您只是想運行JS代碼,那麼JavaScriptCore Obj-C API就更加簡潔和容易。如果你想控制「AppleScriptable」應用程序,然後使用AppleScript - 這是唯一正式支持的†選項,正常工作。

(†有SwiftAutomation,但蘋果還沒有被咬,我不傾向於支持它自己給蘋果公司的Mac自動化的慢性管理不善,我們會看到WWDC17會發生什麼。)

+0

我已經作出大量的JXA腳本,所以我希望能夠從Swift中執行。如果Swift無法做到這一點,我想只有通過swift才能用osascript運行shell? – jl303

+0

有OSAKit,但它沒有記錄,所以你必須爲自己弄清楚。或者將腳本保存爲'.scpt'格式,即'NSAppleScript' /'NSUserAppleScriptTask'將運行。 (每次從源代碼編譯本身就是一種代碼異味;在天真/不安全的代碼中很常見,它們通過代碼字符串進行參數化,而不是將它們作爲參數傳遞給腳本的「運行」處理程序。)另一個AppleScript的好處是AppleScriptObjC可以[直接從ObjC/Swift](http://appscript.sourceforge.net/asoc.html)調用AS處理程序,就好像它們是本地方法一樣;大大減少痛苦。 – has