防止或清除基于 MacOS SwiftUI 文档的应用程序的应用程序状态持久性

Prevent or clear app state persistence for MacOS SwiftUI Document Based App

我正在使用 Xcode 13.1 在 MacbookPro M1 Pro 上使用 MacOS 12.0.1 上的 SwitfUI 开发基于 MacOS 文档的应用程序。我遇到了一个问题,即应用程序总是在上次使用的目录中重新打开文档浏览器。当它在机器上时没问题,但如果最后一次使用是在网络驱动器上,那就很痛苦了。我正在尝试找到一种方法来抑制这种“始终使用最后一个目录进行恢复”的操作模式。

我尝试使用@NSApplicationDelegateAdaptor 方法并实施;

  func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool {
    print(#function + " returning false")
    return false
  }

在我的 NSApplicationDelegate class 中,它确实被调用了(尽管它 似乎 有时在对话框出现后),但是这不会阻止应用程序秘密记住最后一个目录。

有谁知道这些信息可能被隐藏在哪里或者是否可以隐藏?

我一直在寻找但找不到将起始目录注入 DocumentGroup 的方法作为可能的解决方案。

TIA 艾伦

好的,对于最终来到这里寻找类似问题的任何人。

经过大量挖掘,我找到了答案,对我来说,就是添加

    UserDefaults.standard.removeObject(forKey: "NSNavLastRootDirectory")

进入应用程序启动。还建议做

UserDefaults.standard.removeObject(forKey: "NSNavLastCurrentDirectory")

但是,只执行第一个会出现抑制文件打开对话框,同时执行这两个操作会导致文件打开对话框与用户文档目录一起打开。