我有一段時間讓NSDocument的自動保存工作。autosavedContentsFileURL成功後自動保存爲零
我有一個NSDocument子類,需要一些用戶輸入並計算(生成)該數據的覆蓋樹。完成後,我嘗試自動保存文檔以捕獲用戶輸入和生成的樹。我正在嘗試使用調試來查找自動保存發生的位置。
下面的代碼片斷是從我的視圖控制器
@IBAction func handleGenerate(_ sender: NSButton)
{
...
// do the work
document.coverTree.generate(dataSet:data, source:dataSourceFinal.stringValue)
document.updateChangeCount(.changeDone)
document.autosave(withDelegate: self, didAutosave: #selector(handleDidAutosave(document:didAutosaveSuccessfully:contextInfo:)), contextInfo: nil)
}
func handleDidAutosave(document:NSDocument, didAutosaveSuccessfully:Bool, contextInfo:UnsafeMutableRawPointer)
{
print("VC::Did Autosave(document:\(document), didAutosaveSuccessfully:\(didAutosaveSuccessfully))")
print("VC::InPlace: \(Document.autosavesInPlace())")
print("VC::Autosaved at: \(document.autosavedContentsFileURL)")
}
如上所示,我用於調試的目的而提供一個完成處理程序。以下是我在控制檯是送走:
Document::updateChangeCount
VC::Did Autosave(document:<coverTreeDemo.Document: 0x6180000cd3c0>, didAutosaveSuccessfully:true)
VC::InPlace: true
VC::Autosaved at: nil
完成處理器被告知自動保存成功(didAutosaveSucessfully設置爲true),而是自動保存的位置是零。我查看了〜/ Library/Autosave Information,並且沒有什麼可以爲我的應用程序(或Xcode)找到。
我還在我的文檔類上安裝了每個write ...方法,以便在調用時打印到控制檯。我沒有看到這些輸出。
那麼爲什麼自動保存完成處理程序被告知保存是成功的,當它看起來什麼都沒有寫出來?
請注意,我可以通過文件>保存菜單成功保存文檔(並使用文件>打開將其加載回去)。在啓動時,窗口/文檔也可以正確恢復IFF我通過文件>保存菜單保存了它們。這只是自動保存,我有問題。
謝謝了, 邁克
請注意,我確實看到了https://stackoverflow.com/questions/408159/cocoa-nsdocument-getting-autosave-to-work,但通讀它(並做了一些調整)後,我仍然有問題。 – MikeMayer67