Невозможно получить доступ к свойству какао с помощью applecript - PullRequest
0 голосов
/ 24 апреля 2011

У меня есть два свойства строки в делегате приложения моего приложения какао, которые соответствуют KVC.Мой .sdef предоставляет их для appleScript в качестве свойств чтения и записи текста.

Когда я использую applecript для выполнения следующих действий, мои свойства возвращаются правильно:

tell application "iKeepFit"
activate
properties
end tell

Что странно, так это то, что когда я пытаюсь получить доступ к свойству по его имени, в редакторе яблочного скрипта появляется диалоговое окно с сообщением об ошибке моего приложения.Все же выходные данные отладки xcode не показывают сообщений.Ранее, когда мой .sdef был неправильным, xcode показывал бы ошибки, если бы я запускал скрипт, вызывающий мое приложение, когда оно подключено к отладчику.

Например
propertyname <- error "Не удается получить имя свойства«.число -1728 из «класса dact» <br>set propertyname "value" <- ошибка «Невозможно установить имя свойства».число -10006 от «class dact» </p>

Есть ли что-то, что обычно вызывает такое поведение?

Я просмотрел две книги по какао, книгу appleScript и множество примеров кода и документации apple, но они, кажется, все реализуют поддержку applecript по-разному.То, что я получил до сих пор, является наиболее близким к рабочему коду из опробования их всех.Вот мой файл .sdef:

<!DOCTYPE dictionary SYSTEM "file://localhost/System/Library/DTDs/sdef.dtd">

<!-- use XInclude to include the standard suite 
<xi:include href="file:///System/Library/ScriptingDefinitions/CocoaStandard.sdef" xpointer="xpointer(/dictionary/suite)"/>
-->
<suite name="iKeepFit Scripting" code="iKft"
    description="Commands and classes for iKeepFit Scripting">

    <class name="application" code="capp" description="The application class.">
        <!-- the following names the Objective-C class where Cocoa will look for
         the property accessor methods for the properties we define for
         this AppleScript class. -->
        <cocoa class="MyApplication"/>

        <!-- the 'done' property. -->
        <property name="completedactivity" code="dAct" description="An activity that was completed" type="text" access="rw">
            <cocoa key="doneActivity"/>
        </property>

        <!-- the 'cancel' property. -->
        <property name="canceledactivity" code="cAct" description="An activity that was canceled" type="text" access="rw">
            <cocoa key="cancelActivity"/>
        </property>

        <responds-to name="completed">
            <cocoa method="handleCompletedActivityScriptCommand:"/>
        </responds-to>
    </class>      
</suite>

Я прокомментировал стандартный набор, потому что он неожиданно сломался и выдаетследующая ошибка: .sdef warning for argument 'FileType' of command 'save' in suite 'Standard Suite': 'saveable file format' is not a valid type name.

Пожалуйста, помогите.Спасибо.

1 Ответ

0 голосов
/ 26 апреля 2011

Мне удалось найти решение.В Snow Leopard Applescript, по-видимому, не знает, какие свойства определены в приложении, если он не окружен блоком using terms from.

using terms from application "iKeepFit"  
    set doneActivity to "test"         
end using terms from

И по какой-то причине элементу требовался идентификатор = "Бла "атрибут в нем - единственная причина, которую я обнаружил, это глядя на вывод .sdef программы редактирования.Реальное разочарование заключается в том, что этого нет ни в одном из примеров или документов, которые я читал.

...