gpt4 book ai didi

iphone - 后台核心数据加载问题

转载 作者:行者123 更新时间:2023-11-29 04:58:04 25 4
gpt4 key购买 nike

我设置了一些使用 NSOperationQueue 在后台加载核心数据的方法,如下所示:

operation = [[NSInvocationOperation alloc] initWithTarget:self                                                      
selector:@selector(selectToLoadDataOne) object:nil];

operation = [[NSInvocationOperation alloc] initWithTarget:self
selector:@selector(selectToLoadDataTwo) object:nil];

“selectToLoadDataOne”和“selectToLoadDataTwo”只是使用应用程序委托(delegate)中的模板 NSManagedContext 的标准 NSFetchRequest。问题是加载几次后,它就完全停止加载并卡在executeFetchRequest:并且没有任何错误。

我知道这与使用具有核心数据的线程有关,因此我尝试为每个调用创建一个新的 nsmanagementobjectcontext,但返回的结果是空的 nsmanagementobject。

有人可以给我指出一个很好的示例或文档,我可以用它来解决从后台线程加载核心数据的问题吗?

最佳答案

Core Data 对于在多线程上运行有非常特定的规则。每个线程必须有一个 NSManagedObjectContext,并且将使用 NSManagedObjectContext 的线程必须是创建它的线程。

您遇到问题是因为您违反了该规则。

而不是使用NSInitationOperation:

  1. 创建 NSOperation 的子类
  2. 传入NSPersistentStoreCoordinator
  3. 在 -main 中创建 NSManagedObjectContext

当然,这只会将它们加载到 NSPersistentStoreCoordinator 中,您仍然需要在主 NSManagedObjectContext 中重新加载它们。

为什么需要在后台线程上加载数据?寻求加快数据加载速度通常表明应用程序中存在更深层次的问题。

关于iphone - 后台核心数据加载问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7563631/

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