NSSavePanel Swift未保存

NSSavePanel Swift未保存,swift,macos,nssavepanel,Swift,Macos,Nssavepanel,我正在尝试使用Swift在macOS中保存一个文件。我的应用程序中有以下设置: 在info.plist中,我设置了此键,其中包含一条消息,我需要访问桌面: Privacy - AppleEvents Sending Usage Description 虽然我从未看到应用程序发出此请求 在我的沙盒中,我为用户选择的文件设置了读/写设置 我使用NSOpenPanel让用户选择一个文件。然后,应用程序以编程方式对所选文件进行更改。我在文本视图中显示更改。然后,我为用户提供保存更改的选项。这是通过

我正在尝试使用Swift在macOS中保存一个文件。我的应用程序中有以下设置:

在info.plist中,我设置了此键,其中包含一条消息,我需要访问桌面:

Privacy - AppleEvents Sending Usage Description 
虽然我从未看到应用程序发出此请求

在我的沙盒中,我为用户选择的文件设置了读/写设置

我使用NSOpenPanel让用户选择一个文件。然后,应用程序以编程方式对所选文件进行更改。我在文本视图中显示更改。然后,我为用户提供保存更改的选项。这是通过NSSavePanel完成的,代码如下:

if let thisFileURL = currentFileURL  {
                
   guard let window = view.window else { return }
   let panel = NSSavePanel()
                
   panel.directoryURL = FileManager.default.homeDirectoryForCurrentUser
   panel.nameFieldStringValue = thisFileURL.lastPathComponent
   panel.title                   = "Saving changes...";
   panel.showsResizeIndicator    = true;
   panel.showsHiddenFiles        = false;
   panel.canCreateDirectories    = true;
   panel.allowedFileTypes        = ["html"]
                
   panel.beginSheetModal(for: window) { (result) in
                    
   if (panel.runModal() == NSApplication.ModalResponse.OK), let saveFileURL = panel.url, let strToSave = self.strCleanContents  {
                        
          do {
             try strToSave.write(to: saveFileURL, atomically: true, encoding: .utf8)
          } catch {
             self.myAppManager.displayInfoAlert("Unmable to save file:\n\(error.localizedDescription)", self, [], false, response: {(bResponse:Bool) in })
          }
     }
}
                
                
currentFileURL
是用户最初选择的文件的URL。
strCleanContents
是用户选择的文件中编辑的字符串


当我测试这个时,不会抛出错误。但也没有发生任何事情。保存面板打开,我可以导航到一个位置,如果我选择原始文件所在的位置,它会询问我是否要覆盖该文件。单击save(保存)不起任何作用,但面板就在那里。我无法取消该进程,它无法关闭,文件未写入。

BeginSheetModel
RunModel
都显示保存面板。调用
beginSheetModal
将面板显示为工作表,或调用
runModal
将面板显示为窗口。

调用
beginSheetModal
runModal
,而不是两者都调用。谢谢,回答这个问题,这样我就可以给你一个提示了!