Хорошо, у меня есть приложение, и я хочу, чтобы оно было доступно для сценариев.Я установил plist, я настроил файл sdef.
Пока у меня есть только одна команда события Apple: gotoPage.это занимает целое число.и возвращает логическое значение.
Соответствующий XML:
<command name="gotoPage" code="dcvwgoto" description="Goto a specified page">
<cocoa class="AEGoto"/>
<direct-parameter description="Page Number" type="integer"/>
<result description="True if the page exists, False othrewise" type="boolean"/>
</command>
У меня есть класс Objective C AEGoto.h:
@interface AEGoto :NSScriptCommand {
}
- (id)performDefaultImplementation;
- (id)performDefaultImplementation
{
int page = [[self directParameter] intValue];
Boolean retval = [gController setPage: page];
return retval? @"YES" : @"NO";
}
setPage: (int) является правильным, и работаетхорошо.
Когда я вызываю это, моя программа, кажется, работает правильно.Но затем я получаю ошибку:
error "DocView получил ошибку: 4 не понимает сообщение gotoPage."число -1708 из 4
В выводе DocView я также получаю:
Ошибка при возврате результата команды сценария: объект результата ... ДА ... не удалось преобразоватьк дескриптору события Apple типа «логический».Этот экземпляр класса 'NSCFString' не отвечает на сообщения -scriptingBooleanDescriptor.
Однако, если я возвращаю только прямое логическое значение, я получаю:
Один шаг до выхода из функции - [NSScriptingAppleEventHandler handleCommandEvent: withReplyEvent:], который не имеет информации о номере строки.Программа получила сигнал: «EXC_BAD_ACCESS».
Итак, я полагаю, у меня есть 2 вопроса: 1) Почему она думает, что хочет сказать 3 перейти на страницу?и 2) как правильно вернуть логическое значение из appleScript?
спасибо.