防止基于NSDocument的应用在崩溃后重新打开文档

时间:2018-09-11 10:23:51

标签: swift cocoa nsdocument

我有一个用于macOS的只读音乐播放器应用程序,该应用程序使用NSDocument免费获取所有文件处理逻辑。

我现在遇到的问题是,每次打开一个或多个播放器窗口时,应用程序崩溃(或被调试器停止)时,它们会在重新启动应用程序时自动重新打开。我不希望这样,因为它会干扰调试,并且此应用程序实际上不会发生合法崩溃。

Apple的NSDocument文档中没有有关重新打开文件的任何内容,因此我很不走运。有适当的方法做到这一点吗?

1 个答案:

答案 0 :(得分:0)

pfandrade的答案的

迅速5 版本:

class override func restoreWindow(withIdentifier identifier: NSUserInterfaceItemIdentifier, state: NSCoder, completionHandler: @escaping (NSWindow?, Error?) -> Void) {
    if (NSApp.delegate as! AppDelegate).disableDocumentReOpening {
        completionHandler(nil, NSError.init(domain: NSCocoaErrorDomain, code: NSUserCancelledError, userInfo: nil) )
    }
    else
    {
        super.restoreWindow(withIdentifier: identifier, state: state, completionHandler: completionHandler)
    }
}
在必要时,您的应用程序委托(AppDelegate)设置的

是标志;在收到应用程序事件以打开文件后,我需要它。