Вызовите класс Objective-c из AppleScript в OSX 10.7 - PullRequest
0 голосов
/ 26 марта 2012

Можно ли вызвать класс Objective-c из AppleScript в OSX 10.7?

Я видел несколько предложений для Snow Leopard или более ранних версий, но ни один из них не работает.

AppleScript-Obj-C, по-видимому, является способом создания графического интерфейса, который использует AppleScript, но я хочу вызвать класс, который я написал из сценария.

Следующее (что не работает) это то, что я хотел бы сделать: -

on getJpegComment(photoFile)
    set aJpeg to call method "initWithPath" of class "JpegCom" with parameter photoFile (does not work)
    return call method "comment" of aJpeg
end getJpegComment

tell application "iPhoto"
    tell album "Sale"
        set thePhotos to get every photo
    end tell

    repeat with aPhoto in thePhotos
        tell application "iPhoto"
            set aPhotoFile to image path of aPhoto
            set aComment to my getJpegComment(aPhotoFile)
            set comment of aPhoto to aComment

        end tell
    end repeat
end tell

Я пошел по этому пути из-за ссылок, которые, казалось, указывали, что это возможно.

Я мог бы написать программу Objective-c, которая называлась AppleScript, но это кажется излишним, поскольку казалось, что это простая задача.

PS У меня есть тысячи фотографий, которые я ввел в JPEG-комментарии Windows, к сожалению, iPhoto их не понимает.

Ответы [ 3 ]

1 голос
/ 26 марта 2012

Нет, вы не можете вызывать Objective-C из обычного автономного AppleScript, запускаемого из редактора AppleScript или из меню сценариев. Вам потребуется встроить сценарий в приложение AppleScriptObjC, созданное с помощью Xcode, или выполнить его в специальной среде, такой как ASObjC Runner .

В тех случаях, когда я просто хочу вызвать пару методов Objective-C, я бы, вероятно, использовал do shell script для вызова Python и использования моста PyObjC. Таким образом, ваш скрипт остается совместимым с обычным AppleScript, и вам не нужны никакие вспомогательные исполняемые файлы. Например:

do shell script "python -c 'from Foundation import NSDate; print NSDate.date()'"
1 голос
/ 23 июня 2013

Вы можете создать сценарий AppleScriptObjC с помощью редактора AppleScript. Перейдите в Файл> Создать из шаблона> Апплет Cocoa-AppleScript.

Это будет работать как стандартный скрипт, без какого-либо графического интерфейса, но вы также можете получить доступ к функциональности Какао, как и при использовании AppleScriptObjC в Xcode. Вы также должны иметь возможность использовать классы Objective-C, как в Xcode.

1 голос
/ 26 марта 2012

Когда я хочу выполнить простую задачу, такую ​​как вы, и мне нужно что-то из target-c, я считаю, что самое простое решение - превратить часть target-c в инструмент командной строки в Xcode.Затем я вызываю инструмент из appleript, используя «do shell script».У меня есть много примеров этих инструментов на моем веб-сайте: 1) код для инструмента unix и 2) как использовать инструмент из applecript.Поэтому в основном вы создаете инструмент, который принимает один параметр (например, путь к изображению) и возвращает комментарий.Посмотрите здесь мои примеры инструментов.Любой из пунктов меню «Обмен кодами» поможет вам с этим подходом.

...