【问题标题】:Is it OK to have multiple NSManagedObjectContext instances per thread?每个线程有多个 NSManagedObjectContext 实例可以吗?
【发布时间】:2011-03-09 21:00:03
【问题描述】:

每个线程必须有一个,但除此之外......你应该有更多吗?多吃有害吗?

例如,我很想围绕每个选项卡有一个 NSManagedObjectContext 构建我的应用程序,处理出现在该特定选项卡上的整体持久性存储的子集。

这样,我可以让选项卡 GUI 监听“其”上下文的通知,而忽略其他。异步网络调用一次只会更改一个选项卡的上下文。

(注意:不使用 NSFetchController,因为 iOS 3.2 之前该类的主要错误,这是一个 3.0+ 应用程序)

我是否误解了如何使用 NSManagedObjectContext?如果是这样,任何人都可以指出使用额外 NSManagedObjectContext 实例的“好”/“坏”原因吗?

更新:这适用于离散上下文,但是当我试图推断在一组数据上使用多个上下文来处理临时更改时,一切都变得非常错误:c.f.关于该主题的问题:How to make/use temporary NSManagedObjects?

【问题讨论】:

  • 经过一些实验后,我注意到 Apple 已经“忘记”在其 API 中包含几个关键方法。例如你如何合并上下文?答:你不能,除非你生成“假”的 NSNotifications。愚蠢的。我不确定 Apple 是否希望您避免使用 NSManagedContext(看起来很奇怪),或者只是没有考虑到他们自己的 API 设计的后果。

标签: iphone core-data nsmanagedobjectcontext


【解决方案1】:

这是可能的,是的,但请注意,您必须正确处理它们并确保上下文之间没有陈旧的数据。

【讨论】:

  • 我的计划是上下文之间没有共享数据;每个选项卡都有一个唯一的数据存储子集(相同的数据类型,只是不同的数据子集)。这 似乎 这可能是 Apple 的意图......也许......但话又说回来,他们似乎没有提供答案,所以我不知道这是否会出现可怕的错误!跨度>
  • @Adam 鉴于这些限制,您应该可以使用多个上下文。
猜你喜欢
  • 1970-01-01
  • 2014-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多