создание приложения с возможностью написания яблок в Objective C, получение причудливых ошибок - PullRequest
0 голосов
/ 17 июня 2010

Хорошо, у меня есть приложение, и я хочу, чтобы оно было доступно для сценариев.Я установил 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?

спасибо.

1 Ответ

2 голосов
/ 17 июня 2010

return [NSNumber numberWithBool:retval];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...