swift - MacOS 应用程序无法重新打开自动保存的文件
问题描述
我正在构建一个 MacOS SwiftUI 基于文档的应用程序,我在其中定义了一个带有新扩展名的新导出类型标识符以及所有这些。
一开始我并不关心 Type Identifier 所以我把它命名com.example.Dapka.dap
为尝试重新打开自动保存的文档,它不会打开,我在控制台中看到以下错误:example
com.Dapka.dap
此应用程序无法重新打开自动保存的 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 文档”格式的文件。” UserInfo={NSLocalizedDescription=“未保存的 Dapka 文档 5”无法处理,因为 Dapka 无法打开“Dapka 文档”格式的文件。, NSLocalizedFailureReason=Dapka 无法打开“Dapka 文档”格式的文件。}}, NSLocalizedDescription=自动保存的无法重新打开文档“(null)”。Dapka 无法打开“Dapka Document”格式的文件。, NSLocalizedFailureReason=Dapka 无法打开“Dapka Document”格式的文件。}
如info.plistExported Type Identifier
所示:
<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
词。
解决方案
我以前也遇到过同样的问题。导致问题的原因是 Xcode 兑现数据,因此您可能需要清理该缓存。
1.清理构建
从菜单中选择Product ,然后单击Clean Build Folder Shift+Command+K
。
2.删除Xcode构建文件夹
如果上一步没有解决它,这个应该可以解决问题。Derived Data 是 Xcode 存储临时构建数据和索引的文件夹,因此您可以毫无问题地删除它。
从菜单中选择Xcode ,然后单击Preferences Command+,
,然后单击Locations。现在,在派生数据下,您将看到该文件夹的位置,单击该位置旁边的箭头以在 Finder 中打开该文件夹,然后将其删除,然后清空垃圾箱。
或者,您可以使用终端删除文件夹:
cd /Users/<YOUR_MAC_NAME>/Library/Developer/Xcode
sudo rm -rf DerivedData
推荐阅读
- javascript - 如何在 Solidity 中构建 HTML 解决方案
- javascript - 循环后返回对象中未定义值的函数
- java - 在android studio中单击时如何使复选框可编辑
- docker - Docker-compose:显示有效配置?
- acumatica - 单击按钮时如何调用方法
- javascript - 循环内的计算以及如何返回值的总和。Vuejs
- webrtc - 在 ICE 候选人中,raddr 和 rport 代表什么?
- tsql - 如何在实例级别为所有数据库编写所有数据库对象的脚本
- database - 如果我不删除使用 QSqlDatabase 创建的数据库会怎样?
- google-maps - 为什么 Google 地图 API 结果不准确?