核心数据模板:运行之间不持久的数据

Posted

技术标签:

【中文标题】核心数据模板:运行之间不持久的数据【英文标题】:Core Data template: Data Not Persisted Between Runs 【发布时间】:2011-09-19 08:57:22 【问题描述】:

我使用 Core Data 模板(在 Lion 10.7 和 Xcode 4 上)创建了一个小型测试 Mac 应用程序。我使用这个站点上的示例http://www.swampfoetus.net/chapter-7-fail/,将所有 Cocoa 绑定与一个 tableview、一个 NSArrayController、一个文本框和一个添加按钮连接起来。 NSArrayController 链接到 App Delegate 的 managedObjectContext。

当我启动应用程序时,一切似乎都运行良好......我可以输入文本并按添加,它会保存在 tableview 中。我保存了几行,然后在文件菜单中按保存(链接到 saveAction IBAction)并退出应用程序。我可以看到数据保存在 xml 数据文件中(我将其重命名为 .xml ... PSC 的类型为 NSXMLStoreType)。

问题是,当我再次启动应用程序时,它启动时没有上次运行时保存在 Core Data 文件中的数据。

每次都会发生这种情况......我可以添加数据并且它会一直附加到数据文件中,但在启动时它似乎永远不会从这个数据文件中读取。

有什么想法可以在这里出错吗?我根本没有弄乱 App Delegate 生成的代码,只设置了似乎工作正常的绑定。我可以检查什么以确保其设置正确?

【问题讨论】:

【参考方案1】:

如果数据显示在持久存储中,那么唯一的解释是绑定问题,即 UI 由于某种原因不显示以前的数据。很难说为什么会发生这种情况,但我的猜测是 fetch 谓词或其他一些绑定限定符导致控制器忽略旧对象以便不显示它们。

我不能肯定地说,因为我无法访问这本书。

这是使用绑定的缺点之一。当他们工作时,他们很棒,但当他们不工作时,他们是@#%!调试。

【讨论】:

是的,这真的很令人困惑......不确定它是否与 Lion 和 AutoSave 有关,尽管模板似乎没有建议,我也在 10.6 机器上尝试过,同样的问题。

以上是关于核心数据模板:运行之间不持久的数据的主要内容,如果未能解决你的问题,请参考以下文章

在核心数据的上下文之间共享非持久对象?

处理核心数据的问题

核心数据/SQLite 存储偶尔数据丢失

Docker 容器数据持久化

spring boot原理

在应用程序之间共享核心数据存储