2010-06-29 82 views
1

你必须每个线程有一个,但除此之外......你应该有更多?多吃有害吗?例如,我很想构建我的应用程序,每个选项卡都有一个NSManagedObjectContext,处理出现在特定选项卡上的整体持久性存储的子集。每个线程有多个NSManagedObjectContext实例可以吗?

这样,我可以让选项卡GUI在“其”上下文中听取notificataions,并忽略其他人。异步网络调用一次只会更改一个选项卡的上下文。

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

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

更新:这对分立的上下文工作正常,但当我试图推断在一组数据上使用多个上下文来处理临时更改时,这一切都变得非常糟糕:c.f.关于该主题的问题:How to make/use temporary NSManagedObjects?

+0

经过一番实验后,我注意到苹果已经“忘记”在其API中包含几个关键方法。例如你如何合并上下文?答:除非产生“假”NSNotifications,否则你不能。笨。我不确定苹果是否希望你避免NSManagedContext(看起来很奇怪),或者只是没有考虑到他们自己的API设计的后果。 – Adam 2010-06-30 01:25:29

回答

0

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

+0

我的计划是在上下文之间没有共享数据;每个选项卡都有一个唯一的数据存储子集(相同的数据类型,只是不同的数据子集)。 这似乎可能是苹果想要的......也许......但是再次,他们似乎没有提供答案,所以我不知道这是否会出现可怕的错误! – Adam 2010-06-29 22:25:01

+0

@亚当鉴于这些限制,你应该很好地使用几个上下文。 – 2010-06-29 22:39:19

相关问题