我正在开发一个非基于文档的核心数据应用程序。
我希望更改发生时能够保存。这是用户对此类应用程序的期望。这也是苹果公司实施的iPhoto or iTunes.
一种强力方法是设置一个计时器来频繁保存。然后,由保存触发的方法将吞掉所有验证错误,以免打扰用户。只有在退出时,用户才会被窃听来整理数据以便保存。恕我直言,这种方法很糟糕。
所以我在想,一定有一种方法可以以某种方式将储蓄与诸如NSEditor
协议。每次用户(或控制器)完成数据编辑时,应以某种方式通知应用程序委托触发保存操作。问题是我不太知道该去哪里寻找。
我认为,对于更复杂的操作,可能需要进行一些交叉验证,我会向用户提供一些与专用接口相关的界面NSManagedObjectContext
.
在 AppKit 应用程序中的每个事件结束时,CoreData 将为您运行一个 -processPendingTransactions。
这样做的一个副作用是,如果您已向 NSManagedObjectContext 注册以接收更改通知,那么您将在每个事件结束时被调用。
因此,例如,在通知处理程序中,您可以调用仅告诉上下文进行保存。
但是,您可能会偏执于在同一上下文的回调中对上下文进行保存,因此如果您执行 PerformSelector:@selector(save:) afterDelay: 将保存推到之后,您可能会感觉更好-processPendingTransactions 已完成。
您甚至可以在 -save: 选择器上执行取消操作,并将延迟设置为 5 秒左右,因此,如果用户或应用程序正在进行一堆更改,它们将全部合并到一个保存中。
事实上,这正是 Delicious Library 1.0-1.09 的工作原理。
-Wil
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)