Использование какао с AppleScript - PullRequest
0 голосов
/ 02 февраля 2020

Возникли проблемы с вызовом методов Какао из AppleScript. Например, выполнение следующего фрагмента кода приводит к ошибке при запуске с использованием osascript:

set sharedWorkspace to call method "sharedWorkspace" of class "NSWorkspace"

Вот исключение: Expected “,” but found identifier. (-2741) Должен ли этот код быть вложен в оператор Tell? Если да, то с каким приложением мне следует разговаривать?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 02 февраля 2020

call method выглядит как что-то из старого AppleScript Studio , который устарел в 10.6 Snow Leopard и с тех пор был удален.

Есть несколько предварительных условий для вызова Cocoa методы - обычный сценарий должен объявить, что он использует желаемые рамки, а различные классы и перечисления определены на уровне приложения и, следовательно, должны быть предваряются current application, или объект должен существовать для отправки message to.

С учетом вышесказанного методы Какао можно вызывать несколькими различными способами - используя ваш фрагмент, например:

use framework "Foundation"

set sharedWorkspace to current application's NSWorkspace's sharedWorkspace
-- or --
set sharedWorkspace to sharedWorkspace of current application's NSWorkSpace
-- or --
tell current application's NSSharedWorkspace's sharedWorkspace
    set sharedWorkspace to it
end tell

Первая форма - это то, что вы обычно видите использованным , так как он наиболее близок к объективной форме C. Приложение в Ma c Руководство по сценариям автоматизации содержит дополнительную информацию о переводе из документации Objective- C, которую Apple ожидает от вас.

1 голос
/ 02 февраля 2020

Это должно работать:

set sharedWorkspace to current application's NSWorkspace's sharedWorkspace()
...