swift - 基于 SwiftUI Document 的多平台应用,在 iOS 上保存内容
问题描述
我正在使用 Xcode 12.3 中的新多平台文档应用程序模板。
默认模板使用 TextEditor() 来编辑文本。在 macOS 上,可以通过菜单中的手动保存命令或键盘快捷键来保存文本,在 iOS 上,单击工具栏中的“<”符号时会保存文本(在返回文件浏览器之前)。
现在,在我的应用程序中,我显然不使用 TextEditor() 但我有自己的编辑器逻辑。在 macOS 上,我仍然可以手动保存项目,但在 iOS 上,单击“<”时,项目将不再自动保存,即不会调用 FileDocument 中的 fileWrapper 函数。
我认为这是因为没有人通知系统 FileDocument 已更改?但是如何手动做到这一点?
解决方案
要回答我自己的问题,您需要做的就是在文档中有一个变量并更改它,例如
struct MyDocument: FileDocument {
@ObservedObject var myProject = MyProject()
var updated : Bool = false
因此,每次更改 myProject() 时,我都会切换更新的变量。我认为向 myProject 发送 objectWillChange() 通知会将项目标记为已编辑,但事实并非如此。
推荐阅读
- c - 线性同余生成器的浮点异常(核心转储)
- javascript - Spring boot自定义gson BEGIN_OBJECT但出现STRING错误
- sql - SQL Server 中点后的子字符串
- python-3.x - 无法使用 Python 拟合正态分布。scipy包缺陷?
- ruby-on-rails - `heroku run rake db:seed` 失败且没有错误;表在远程数据库中存在但为空
- java - 从 Activiti 工作流中检索所有用户任务
- pytorch - 如何找到 torch.nn.conv_transpose2d 和 max_unpool2d 的参数?
- java - docker中的内存使用超过了xmx控制或小于xms
- javascript - momentjs 不会按照指定的时区更改日期/时间
- c# - 身份确认电子邮件问题