Как передать строковый параметр в обработчик AppleScript в swift (appleScriptObjC framework)?
У меня есть обработчик объекта сценария AppleScript (для номеров приложения), который принимает строку в качестве входных данных для изменения диапазона выбора. Я знаю, что AppleScript может принимать переменные параметры из swift как экземпляр NSAppleEventDescriptor, но когда я передаю его обработчику, я получаю эту ошибку.
Это строка, передающая переменную:
numbersScript.selectionRange(_: NSAppleEventDescriptor.init(string: "A3"))
Это ошибка, которую я получаю:
Can’t make «class ocid» id «data optr0000000000C0260000600000» into type list, record or text. (error -1700)
Вот код для NumbersScript.applescript:
script NumbersScriptObj
property parent: class "NSObject"
property demoProp: "Default Property Value"
on demoHandler()
tell me to log my demoProp
end demoHandler
on selectionRange_(mySelectionRange)
tell application "Numbers"
activate
set boy to "F20"
mySelectionRange as text
set girl to mySelectionRange & ":" & boy
tell the first table of the active sheet of document 1
set the selection range to range girl
end tell
end tell
end selectionRange
end script
Вот ApplescriptProtocol.swift:
import Foundation
@objc(NSObject) protocol AppleScriptProtocol {
var demoProp: NSString { get set }
func demoHandler()
func selectionRange(_: NSAppleEventDescriptor)
}
Вот NumbersScript.swift:
import Foundation
import AppleScriptObjC
class NumbersScript {
static func load() {
Bundle.main.loadAppleScriptObjectiveCScripts()
}
static func numbersFunction() -> AnyObject {
let ScriptObj = NSClassFromString("NumbersScriptObj") as NSObject.Type
let obj = ScriptObj!.init()
return obj as AnyObject
}
init() {
}
}
Вот главный.
import Foundation
import CoreFoundation
import ScriptingBridge
import AppleScriptObjC
let myFirstSelectionRange = NSAppleEventDescriptor(string: "A4:B6")
NumbersScript.load()
let numbersScript = NumbersScript.numbersFunction() as! AppleScriptProtocol
numbersScript.demoProp = "prop value from app delegate" as NSString
numbersScript.demoHandler()
numbersScript.selectionRange(_: NSAppleEventDescriptor.init(string: "A3"))