Вход в AppleScriptObjC в Xcode

Я пишу код в AppleScript, чтобы склеить приложение Obj-C Cocoa с некоторыми другими вещами. Я очень не знаком с AppleScript, потому что также изучаю Cocoa, поэтому, конечно, у меня есть всевозможные ошибки в моем коде, которые нужно отработать, и мне нужно хотя бы какое-то ведение журнала.

Однако вывод команды AppleScript «log», похоже, не попадает в консоль отладчика XCode, и вызов NSLog, похоже, не работает. Можно ли каким-либо образом отправить вывод в консоль отладчика из метода класса AppleScriptObjC?

(предложение: новый тег applescriptobjc в этом вопросе — я пока не могу создавать новые теги)


person Walter Mundt    schedule 14.07.2010    source источник
comment
Вы должны показать код, который вы используете; в противном случае невозможно узнать, что вы делаете неправильно, если что-то в вашем коде нужно изменить.   -  person apaderno    schedule 16.07.2010
comment
Я опубликую код, если ответ regulus6633 не сработает. Я еще не тестировал его, потому что сразу после того, как я разместил этот вопрос, я обнаружил Scripting Bridge и сразу же переключился на него, так как в любом случае мне гораздо удобнее в Objective-C, чем в AppleScript.   -  person Walter Mundt    schedule 16.07.2010
comment
Вот почему я сам не использую applescriptobjc. У нас уже есть скриптовый мост и NSApplescript, поэтому я не вижу необходимости изучать еще один набор синтаксиса.   -  person regulus6633    schedule 20.07.2010


Ответы (2)


Я не использую applescriptobjc, поэтому не уверен. Тем не менее, я использовал Applescript Studio, поэтому, возможно, мой опыт применим. Я заметил, что вы не можете иметь оператор журнала (или NSLog) внутри блока кода приложения. По сути, если вы это сделаете, вы скажете приложению что-то регистрировать, а приложение не знает команду журнала... так что это не сработает. Таким образом, вы должны получить свои операторы журнала из блоков сообщения приложения или использовать скажите мне, чтобы зарегистрировать «что-то» в блоке сообщения... что, по сути, говорит applescript вести журнал.

person regulus6633    schedule 15.07.2010
comment
Я не уверен, что это совсем правильно. Я помещал операторы журнала во всевозможные места, и у меня никогда не было проблем. Если это проблема, то команду журнала можно так же легко абстрагировать до подпрограммы (например, как мой ответ на вопрос ОП), которая устраняет текущий оператор Tell. - person Philip Regan; 19.07.2010
comment
Пошел и протестировал его, это работает для меня там, где обычные журналы не работают. - person Walter Mundt; 21.07.2010

Не идеально, потому что это регистрируется в консоли и использует оболочку, но это должно, по крайней мере, дать вам что-то, что работает:

log_entry("Hello, World!")

on log_entry(theLine)
    do shell script "echo " & theLine & " >> ~/Library/Logs/AppleScript-events.log"
end log_entry
person Philip Regan    schedule 19.07.2010