【发布时间】:2021-11-04 21:14:24
【问题描述】:
我正在构建一个基于 MacOS SwiftUI 文档的应用程序,我在其中定义了一个带有新扩展名的新导出类型标识符以及所有这些。
一开始,我并不关心类型标识符,所以我将它命名为com.example.Dapka.dap,但后来,我试图摆脱example这个词,将标识符从Info.xml更改为com.Dapka.dap。 plist 和文档声明文件,但是从那时起,每次我尝试重新打开自动保存的文档时,它都不会打开,并且我在控制台中看到以下错误:
此应用程序无法重新打开自动保存的 com.example.dapka.dap 文件。
-[NSDocumentController rebootDocumentForURL:withContentsOfURL:display:completionHandler:] 在状态恢复期间失败。这是错误:
Error Domain=NSCocoaErrorDomain Code=256 "自动保存的文档 “(null)”无法重新打开。 Dapka无法打开“Dapka”中的文件 文档”格式。” UserInfo={NSUnderlyingError=0x600003e5e610 {Error Domain=NSCocoaErrorDomain Code=256 ""未保存的 Dapka 文档 5" 可以 因为Dapka无法打开“Dapka Document”中的文件,所以不做处理 格式。” UserInfo={NSLocalizedDescription=“未保存的 Dapka 文档 5” 无法处理,因为Dapka无法打开“Dapka”中的文件 Document”格式。, NSLocalizedFailureReason=Dapka 无法打开文件 “Dapka 文档”格式。}}, NSLocalizedDescription=自动保存的 无法重新打开文档“(null)”。 Dapka 无法打开文件 “Dapka 文档”格式。, NSLocalizedFailureReason=Dapka 不能 以“Dapka Document”格式打开文件。}
这里是Exported Type Identifier,如 info.plist 所示:
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
<string>public.content</string>
</array>
<key>UTTypeDescription</key>
<string>Dapka Document</string>
<key>UTTypeIdentifier</key>
<string>com.Dapka.dap</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>dap</string>
</array>
</dict>
</dict>
</array>
这也是Document Types:
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeIconSystemGenerated</key>
<integer>1</integer>
<key>CFBundleTypeName</key>
<string>Dapka Document</string>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>com.Dapka.dap</string>
</array>
<key>NSDocumentClass</key>
<string></string>
<key>NSUbiquitousDocumentUserActivityType</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER).dap</string>
</dict>
</array>
这是文档声明文件中的文档变量:
extension UTType {
static var dapkaDocument = UTType(exportedAs: "com.Dapka.dap")
}
请注意,当我将标识符返回到com.example.dapka.dap 时,一切都恢复正常。我很困惑,我认为还有一些地方包含旧的example 字。
【问题讨论】:
标签: swift macos swiftui document-based