簡體   English   中英

NSSavePanel Swift 不保存

[英]NSSavePanel Swift not saving

我正在嘗試使用 Swift 在 macOS 中保存文件。 我的應用程序中有以下設置:

在 info.plist 中,我設置了這個鍵,並帶有一條消息,我需要訪問桌面:

Privacy - AppleEvents Sending Usage Description 

雖然我從來沒有看到應用程序提出這個請求。

在我的沙箱中,我為用戶選擇的文件設置了讀/寫集

在此處輸入圖像描述

我使用 NSOpenPanel 讓用戶 select 一個文件。 然后應用程序以編程方式對所選文件進行更改。 我在 textview 中顯示更改。 然后,我為用戶提供保存更改的選項。 這是通過 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是用戶選擇的文件中的已編輯字符串。

當我對此進行測試時,不會引發錯誤。 但也沒有任何反應。 SavePanel 打開,我可以導航到一個位置,如果我 select 與原始文件所在的位置相同,它會詢問我是否要覆蓋該文件。 點擊保存雖然什么也沒做,面板就在那里。 我無法取消該過程,它沒有關閉,文件沒有寫入。

beginSheetModalrunModal都顯示保存面板。 調用beginSheetModal將面板顯示為工作表或調用runModal將面板顯示為 window。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM