在首选项控制器的基于文档的应用程序中获取托管对象上下文



我有一个基于 OSX 文档的应用程序,用 Swift 编写,我想将一些数据从我的首选项窗口控制器提交到我的 managedObjectContext 中。
由于首选项窗口似乎不是通过 NSPersistentDocument 调用的,而是直接从 appDelegate 调用的,因此获取该控制器的 managedObjectContext 的最佳方法是什么?到目前为止,大部分操作都是使用情节提要和绑定完成的。
我的想法是否正确,如果我在应用程序委托中实例化一个核心数据堆栈,就会否定通过 NSPersistentDocument 提供的堆栈(这将破坏事情的目的)?

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

编辑:通常首选项应使用NSUserDefaults存储,但假设您确实有将此数据存储在持久文档中的特定需求,您应该能够使用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 } }

最新更新