SwiftUI文档应用问题:从「最近项目」创建的文件不显示
SwiftUI文档应用:Files「最近项目」创建文档丢失问题
问题现象
基于Apple官方SwiftUI文档应用示例开发的项目,在iOS 18.4 + Xcode 16.3环境下出现异常:
- 从Files应用「最近项目」标签创建新文档后,文件既不显示在「最近项目」列表,也不存在于Files应用的任何目录中
- 打印创建的文档URL显示路径格式有效,但实际导航到该路径时文件不存在
- 从Files应用「浏览」标签创建文档则完全正常,文件能正确保存并显示
重现步骤
- 使用官方SwiftUI文档应用示例项目
- 运行应用后,切换到Files应用的「最近项目」标签
- 创建新文档,观察文件是否出现
- 切换到「浏览」标签重复创建操作,对比结果
解决方案尝试
1. 显式指定文档默认存储位置
在文档类型的configuration中,明确设置默认保存位置为用户文档目录,避免依赖「最近项目」的临时聚合逻辑:
struct MyDocument: FileDocument { // ... 原有文档实现 ... static var configuration: DocumentConfiguration { let defaultLocation = FileDocumentSaveLocation.default(.documentDirectory) return DocumentConfiguration(for: Self.self) { config in config.defaultSaveLocation = defaultLocation } } }
2. 强制完成文档持久化写入
在文档创建后,主动触发保存操作,确保文件被写入持久化目录:
DocumentGroup(newDocument: { MyDocument() }) { file in ContentView(document: file.$document) .onAppear { Task { do { // 强制以创建模式保存到当前URL try await file.save(to: file.fileURL, for: .forCreating) } catch { print("文档保存失败: \(error.localizedDescription)") } } } }
3. 验证URL的实际存储路径
创建文档后,打印并检查file.fileURL的完整路径,确认其是否位于用户沙盒的Documents目录下(而非临时目录)。如果路径指向临时区域,说明系统未正确处理「最近项目」标签下的存储请求。
4. 反馈给Apple
该问题大概率是iOS 18.4的系统API兼容性问题,建议通过Apple Feedback Assistant提交反馈,附上完整的重现步骤、环境信息和项目代码片段,帮助Apple定位修复。
内容的提问来源于stack exchange,提问作者Viktor Maric
相关产品推荐
相关产品推荐

