gpt4 book ai didi

ios - 将多个托管对象上下文与核心数据库一起使用

转载 作者:技术小花猫 更新时间:2023-10-29 11:13:20 27 4
gpt4 key购买 nike

我正在使用核心数据来存储和获取我的数据,但我遇到了一些问题。我想使用两个线程并行进行以下操作:

  1. 线程 1 将数据插入 CoreData 基表 (A)。
  2. 线程二将从另一个表 (B) 中获取数据。

我该怎么做?

我在谷歌上做了一些研究,他们说,我们需要使用多个托管对象上下文,但我不知道我们将如何使用它。

最佳答案

你不应该在多个线程上访问你的 NSManagedObjectContext。在 AppDelegate 中创建的 NSManagedObjectContext 只能在主线程上访问。

这意味着,您应该为您创建的每个线程创建一个 NSManagedObjectContext。确保将线程的 NSManagedObjectContext 的父上下文设置为主上下文。

示例:-

NSManagedObjectContext *mainContext; // = getMainContext
NSManagedObjectContext *threadContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
threadContext.parentContext = mainContext;

然后在您的线程上使用 threadContext...

您可以在主线程上继续与 UI 相关的抓取。或者,如果它也必须有其他线程,那么也为它创建一个上下文。

要深入了解 Core Data 并发性,请参阅 a tutorial

设置父/子上下文关系会将线程的上下文与主上下文(它是父上下文)合并。

了解父/子上下文关系 check this URL

或者就在这张图的下面-

Parent/Child context relationship.

归功于文章 URL...

关于ios - 将多个托管对象上下文与核心数据库一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29489540/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com