Я использую NSUserAutomatorTask
для запуска файла .workflow
, созданного с помощью приложения Automator в macOS 10.13.
Я передаю переменные в рабочий процесс через свойство variables
:
https://developer.apple.com/documentation/foundation/nsuserautomatortask/1418099-variables
Родительское приложение находится в песочнице.Сценарий находится в .applicationScriptsDirectory
и успешно выполняется, когда переменные не заданы или когда те же переменные установлены в приложении и объявлены в рабочем процессе.
if let workflow = try? NSUserAutomatorTask(url: url) {
workflow.variables = ["randomVariable": "value"] // NOTE
workflow.execute(withInput: nil) { (value, error) in
if let error = error {
print(error) // No variable named "randomVariable"
}
}
}
Рабочий процесс не может быть запущен сошибка:
Нет переменной с именем randomVariable
Однако, если я отредактирую рабочий процесс и добавлю переменную, совпадающую с набором в коде, все будет хорошо.
Я больше не получаю сообщение об ошибке, и рабочий процесс выполняется правильно:
Это проблема, потому что я хочу передать несколько частей информации в качестве переменных для любого потенциального рабочего процесса, и для каждого рабочего процесса индивидуально принять решение обработать каждый необходимый параметр.
Я не хочу требуют , чтобы каждый рабочий процесс объявлял переменные, которые мое приложение будет опционально предоставлять.
Обратите внимание, что в моем примере рабочего процесса переменная никогда не используется.Я не хочу, чтобы было объявлено о дополнительном требовании.
Есть ли способ избежать, чтобы каждый рабочий процесс объявлял переменные, которые мое приложение передает при выполнении рабочего процесса?
Или есть способпроверить, какие переменные объявлен рабочим процессом?Тогда я мог передать только те, которые фактически использовались рабочим процессом.