gpt4 book ai didi

cocoa - CoreData 未将类型设置为 XML

转载 作者:行者123 更新时间:2023-12-03 17:24:53 25 4
gpt4 key购买 nike

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

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

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

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

我需要做一些特殊的事情来将其强制转换为 XML 吗?

根据Apple的文档,我的理解是,在使用NSPersistentDocument子类时,我不需要做设置NSPersistentStore或NSPersistentStoreCoordinator的工作。我的理解是这一切都是免费的。另外,据我所知,XML 是默认设置。

最佳答案

Xcode 使用 Core Data 为基于文档的应用程序创建的模板非常适合您所描述的内容。您可能需要包含更多信息,但要检查的一件事是 Info.plist 中的文档类型是否正确。以下是开箱即用的值。当您在项目 View 中选择目标时,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>

关于cocoa - CoreData 未将类型设置为 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9404962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com