在基于文档的应用程序中为首选项控制器获取 managedObjectContext

Getting the managedObjectContext in a document-based app for preferences controller

我有一个 OSX 基于文档的应用程序,它是用 Swift 编写的,我想将一些数据从我的首选项 window 控制器提交到我的 managedObjectContext 中。
因为首选项 window 似乎不是通过 NSPersistentDocument 调用的,而是直接从 appDelegate 调用的,所以获取该控制器的 managedObjectContext 的最佳方法是什么? 到目前为止,大部分都是使用故事板和绑定来完成的。
如果我在应用程序委托中实例化一个核心数据堆栈,那么我是否认为通过 NSPersistentDocument 提供的堆栈无效(这将违背事物的目的)?

这是什么数据?这些是特定于当前文档的某种设置吗?我很好奇只是因为这里可能有不同的解决方案,具体取决于您想要完成的具体内容。

编辑:通常应该使用 NSUserDefaults, but assuming you do have a specific need to store this data in your persistent document, you should be able to use NSDocumentController 存储首选项以获取持久文档列​​表:

let documents = NSDocumentController.sharedDocumentController().documents

或者只获取当前文档。无论哪种方式,您都可以从那里获取托管对象上下文:

if let document = NSDocumentController.sharedDocumentController().currentDocument as? NSPersistentDocument { if let context = document.managedObjectContext { // do whatever is needed with the context } }