Как запустить приложение Какао без документов, сбросив на него файлы? - PullRequest
2 голосов
/ 17 февраля 2010

Единственный способ, которым я смог добиться этой работы, - это приложение на основе документов (которым это приложение не является). В моем приложении, не основанном на документах, я определил поддерживаемые типы документов (на вкладке «Свойства» информационного окна «Цель»), а мой AppDelegate реализует application:openFile: и application:openFiles:. Это позволяет удалять файлы на значке Dock приложения, когда оно уже запущено, но не на его значке в Finder (запущен или нет). Чего мне не хватает?

Обновлено

По запросу мой массив типов документов:

<array>
    <dict>
        <key>CFBundleTypeExtensions</key>
        <array>
            <string>nsf</string>
            <string>nsfe</string>
        </array>
        <key>CFBundleTypeName</key>
        <string>NSF Soundtrack</string>
        <key>CFBundleTypeRole</key>
        <string>None</string>
        <key>LSTypeIsPackage</key>
        <false/>
        <key>NSPersistentStoreTypeKey</key>
        <string>InMemory</string>
    </dict>
</array>

Ответы [ 2 ]

1 голос
/ 17 февраля 2010

Две части этого вызывают у меня подозрения:

    <key>CFBundleTypeRole</key>
    <string>None</string>

Разве вы не имеете в виду, что это как минимум Средство просмотра?

    <key>NSPersistentStoreTypeKey</key>
    <string>InMemory</string>

Что вы пытаетесь сделать здесь?Почему ваш файл на диске должен быть указан как постоянное хранилище Core Data в памяти?Если вы хотите просто загрузить все это в память при загрузке, это называется Binary или XML, а не InMemory.

Я также рекомендую определить UTI для типов документов, а не только для расширений.

Вы также должны перепроверить, что, по мнению Launch Services, происходит с помощью lsregister.Иногда проблема заключается в том, что у вас есть несколько версий вашего приложения, а Launch Services не нашел ту, которая, по вашему мнению, должна была быть.Вы можете посмотреть базу данных Launch Services следующим образом: /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -dump

Это должно работать на 10.5 и 10.6.10.4 имеет lsregister в другом месте.Я обычно использую locate, чтобы найти его, а не пытаться запомнить его.

0 голосов
/ 17 февраля 2010

В настройках Target перейдите на вкладку Properties и добавьте в таблицу типов документов.

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