CoreData未将类型设置为XML



我很难调试数据(CoreData,NSPersistentDocument)的问题。

我有一个NSPersistentDocument的子类。我使用的是NSManagedObject子类/标准核心数据模型。我在NSPersistentDocument或NSManagedObject类中没有做任何特别的事情。我只是在创建一个对象(在NSPersistentDocument的子类中):

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

当我尝试在应用程序中保存文档时,会有一个文件格式下拉列表。它包括二进制(默认)、SQLite和XML。我将文件保存为XML。当我尝试查看它(使用较少的,甚至在Finder中打开)时,我发现该文件存储为二进制文件。

有什么特别的东西需要我去强制它为XML吗?

根据苹果公司的文档,我的理解是,在使用NSPersistentDocument子类时,我不需要设置NSPersistentStore或NSPersistentStoreCoordinator。我的理解是所有这些都是免费的。另外,根据我所读到的内容,XML是默认的。

Xcode为具有核心数据的基于文档的应用程序创建的模板非常适合您所描述的内容。您可能需要包含更多的信息,但需要检查的一件事是info.plist中的文档类型是否正确。以下是开箱即用的值。当您在项目视图中选择目标时,Xcode中的"信息"选项卡下也有一个图形编辑器。

试着创建一个新项目,检查核心数据和基于文档的应用程序(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>

相关内容

  • 没有找到相关文章

最新更新