Core data 由核心数据支持的NSTextView

Core data 由核心数据支持的NSTextView,core-data,nstextview,nspersistentdocument,Core Data,Nstextview,Nspersistentdocument,我有一个NSTabViewController,在一个选项卡中有一个NSTextView。文本保存在核心数据中。当视图消失时,我保存文本 override func viewWillDisappear() { super.viewWillDisappear() self.saveText() } 但是,当文档本身关闭时,如何保存文本?目前,我每次击键都会保存,但这可能太过分了。有更好的办法吗 func textDidChange(notification: NSNotifica

我有一个NSTabViewController,在一个选项卡中有一个NSTextView。文本保存在核心数据中。当视图消失时,我保存文本

override func viewWillDisappear()
{
    super.viewWillDisappear()
    self.saveText()
}
但是,当文档本身关闭时,如何保存文本?目前,我每次击键都会保存,但这可能太过分了。有更好的办法吗

func textDidChange(notification: NSNotification)
{
    self.saveText() //save text after every keystroke => excessive but works
}
编辑:

func saveText()
{
    guard let assumedObject = self.representedObject as? NSManagedObject else { return }
    assumedObject.notes = self.textView.string
}
如果
saveData()
有效,而
saveText()
无效,也许您应该调用
saveData()


保存文本字段的正确位置是
textfielddendediting:
,这是一种文本字段委托方法。

NSPersistentDocument
负责所有保存操作、撤消操作等。这是本类的全部目的。没有必要将任何内容推送到核心数据。只需将您的
NSTextView
值绑定到核心数据属性即可


最好删除对
saveText()
函数的所有调用。

当窗口关闭时,是否
视图将消失
未被调用?如果用户希望保存文档但不关闭它怎么办?然后,文档和视图都不会关闭,但核心数据中的内容不是最新的。如何保存其他属性?当用户更改其他属性时,会立即将其推送到核心数据。saveData是我的自定义保存功能。我在这里重命名它是为了保存文本,以便更清楚地了解它的功能。但我好像忘了在任何地方都这么做。问题不是保存文本。问题在于避免不必要的工作。如果用户键入的是整个段落,那么每次击键后保存是否过多?我添加了额外的信息,以指示在何处最好地保存文本字段内容。