【问题标题】:Is it necessary to call NSManagedObjectContext save: for in-memory stores?是否有必要调用 NSManagedObjectContext save: 用于内存存储?
【发布时间】:2013-05-10 10:03:13
【问题描述】:

我在我的应用程序中使用 CoreData,具有 NSInMemoryStoreType 类型的持久存储。

这种类型的商店有必要打电话给NSManagedObjectContext save:吗?将save: 传递给NSManagedObjectContext 实际上对内存存储有任何作用吗?

Apple's documentation 简单地说:

保存:
尝试将对已注册对象的未保存更改提交到其持久存储。

在内存存储的上下文中这实际上意味着什么?

【问题讨论】:

  • +1,非常好的问题。我一直保存上下文,相信在上下文中创建的所有对象都会被移动到 persistentStore 并会减少内存占用。

标签: ios cocoa core-data


【解决方案1】:

我找不到任何文档,但我确信它仍然需要。

Core Data 有一个内存前端(由托管对象上下文表示)和一个持久后端(“存储”)。持久化后端通常是一个文件,但它可以只驻留在内存中以供 NSInMemoryStoreType 使用。

要使所有Core Data 功能正常工作,必须将这两个部分分开,并通过save 操作从前端(待更改)推送到后端(持久数据)。

请注意,同一存储(后端)可以有多个托管对象上下文(前端),并且每个都具有不同的待处理更改。请注意,每个托管对象上下文都有 hasChangesNSUndoManager 之类的方法。它仍然适用于内存存储。

还有一些信息here

【讨论】:

    【解决方案2】:

    save: 执行属性和关系约束的验证。

    【讨论】:

      猜你喜欢
      • 2019-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多