CoreData не устанавливает тип как XML - PullRequest
1 голос
/ 23 февраля 2012

Мне трудно отладить проблему с моими данными (CoreData, NSPersistentDocument).

У меня есть подкласс NSPersistentDocument. Я использую подклассы NSManagedObject / стандартные модели Core Data. Я не делаю ничего особенного в NSPersistentDocument или с классами NSManagedObject. Я просто создаю объект (в подклассе NSPersistentDocument):

[NSEntityDescription insertNewObjectForEntityForName:@"ModelName" 
    inManagedObjectContext:[self managedObjectContext]];

Когда я пытаюсь сохранить документ в своем приложении, появляется раскрывающийся список форматов файлов. Он включает в себя двоичные (по умолчанию), SQLite и XML. Я сохраняю файл как XML. Когда я пытаюсь просмотреть его (используя less или даже открыть в Finder), я обнаруживаю, что файл хранится в двоичном виде.

Есть ли что-то особенное, что мне нужно, чтобы принудительно преобразовать это в XML?

Насколько я понимаю, основываясь на документации Apple, при использовании подкласса NSPersistentDocument мне не нужно выполнять настройку NSPersistentStore или NSPersistentStoreCoordinator. Насколько я понимаю, все это бесплатно. Кроме того, из того, что я прочитал, по умолчанию используется XML.

1 Ответ

0 голосов
/ 12 марта 2012

Шаблон, который Xcode создает для основанного на документе приложения с Core Data, отлично подходит для того, что вы описываете.Возможно, вам придется включить немного больше информации, но одна вещь, которую нужно проверить, это то, что типы документов в вашем Info.plist являются правильными.Ниже приведены стандартные значения.Существует также графический редактор в XCode для этого на вкладке Info, когда у вас выбранная цель выбрана в представлении проекта.

Попробуйте создать новый проект с проверкой Core Data и Document Based Application (Xcode 4.3) и установитепосмотрим, работает ли это нормально.Если это так, то что-то в вашей конфигурации изменилось, чтобы сделать его двоичным вместо XML.

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeExtensions</key>
        <array>
            <string>binary</string>
        </array>
        <key>CFBundleTypeMIMETypes</key>
        <array>
            <string>application/octet-stream</string>
        </array>
        <key>CFBundleTypeName</key>
        <string>Binary</string>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>LSTypeIsPackage</key>
        <false/>
        <key>NSDocumentClass</key>
        <string>Document</string>
        <key>NSPersistentStoreTypeKey</key>
        <string>Binary</string>
    </dict>
    <dict>
        <key>CFBundleTypeExtensions</key>
        <array>
            <string>sqlite</string>
        </array>
        <key>CFBundleTypeMIMETypes</key>
        <array>
            <string>application/octet-stream</string>
        </array>
        <key>CFBundleTypeName</key>
        <string>SQLite</string>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>LSTypeIsPackage</key>
        <false/>
        <key>NSDocumentClass</key>
        <string>Document</string>
        <key>NSPersistentStoreTypeKey</key>
        <string>SQLite</string>
    </dict>
    <dict>
        <key>CFBundleTypeExtensions</key>
        <array>
            <string>xml</string>
        </array>
        <key>CFBundleTypeIconFile</key>
        <string></string>
        <key>CFBundleTypeMIMETypes</key>
        <array>
            <string>text/xml</string>
        </array>
        <key>CFBundleTypeName</key>
        <string>XML</string>
        <key>CFBundleTypeOSTypes</key>
        <array>
            <string>????</string>
        </array>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>LSTypeIsPackage</key>
        <false/>
        <key>NSDocumentClass</key>
        <string>Document</string>
        <key>NSPersistentStoreTypeKey</key>
        <string>XML</string>
    </dict>
</array>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...