1

データ(CoreData、NSPersistentDocument)の問題をデバッグするのに苦労しています。

NSPersistentDocumentのサブクラスがあります。NSManagedObjectサブクラス/標準コアデータモデルを使用しています。NSPersistentDocumentまたはNSManagedObjectクラスで特別なことは何もしていません。(NSPersistentDocumentのサブクラスに)オブジェクトを作成しているだけです。

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

アプリにドキュメントを保存しようとすると、ファイル形式のドロップダウンが表示されます。Binary(デフォルト)、SQLite、およびXMLが含まれます。ファイルをXMLとして保存します。それを表示しようとすると(使用量を減らすか、Finderで開くことさえ)、ファイルがバイナリとして保存されていることがわかります。

XMLに強制するために行く必要がある特別なものはありますか?

Appleのドキュメントに基づく私の理解では、NSPersistentDocumentサブクラスを使用する場合、NSPersistentStoreまたはNSPersistentStoreCoordinatorを設定する作業を行う必要はありません。私の理解では、これらはすべて無料で提供されます。また、私が読んだことから、XMLがデフォルトです。

4

1 に答える 1

0

The template that Xcode creates for a document based app with Core Data works perfectly for what you're describing. You may need to include a bit more info, but one thing to check would be that the document types in your Info.plist are correct. Below are the out of the box values. There's also a graphical editor in Xcode for this under the Info tab when you have your target selected in the project view.

Try creating a new project with Core Data and Document Based Application checked (Xcode 4.3) and check to see if that works fine. If it does, then something in your configuration has changed to make it binary instead of 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>
于 2012-03-11T21:48:33.477 に答える