ios – 多个NSPersistentStoreCoordinator实例可以连接到同一个底层SQLite持久性存储吗?

ios – 多个NSPersistentStoreCoordinator实例可以连接到同一个底层SQLite持久性存储吗?,第1张

概述我读过的关于在多个线程上使用Core Data的所有内容都讨论了使用共享单个NSPersistentStoreCoordinator的多个NSManagedObjectContext实例.这是理解的,我已经使它在一个应用程序中工作,该应用程序在主线程上使用Core Data来支持UI,并且具有可能需要一段时间才能运行的后台获取 *** 作. 问题是NSPersistentStoreCoordinator会 我读过的关于在多个线程上使用Core Data的所有内容都讨论了使用共享单个NSPersistentStoreCoordinator的多个NSManagedobjectContext实例.这是理解的,我已经使它在一个应用程序中工作,该应用程序在主线程上使用Core Data来支持UI,并且具有可能需要一段时间才能运行的后台获取 *** 作.

问题是NSPersistentStoreCoordinator会对基础sqlite持久性存储的访问进行序列化,因此仍然存在背景提取 *** 作阻止UI的情况.

后台提取 *** 作永远不会更新数据,只能从中读取数据.我可以在连接到相同底层sqlite持久性存储的后台线程上设置完全并行的Core Data堆栈(NSManagedobjectContext,NSManagedPersistentStoreCoordinator和NSManagedobjectModel)吗?看起来这样可以在UI线程和后台获取 *** 作之间提供完全的并发性.

解决方法 我现在的尝试性答案现在是肯定的.

我通过传递NSPersistentStore实例初始化我的后台 *** 作.在后台线程中,此存储的属性(包括URL)用于创建一个全新的Core Data堆栈,如下所示:

//  create managed object model    NSURL *modelUrl = [[NSBundle bundleForClass:[self class]] URLForResource:@"..." withExtension:@"..."];    NSManagedobjectModel *managedobjectModel = [[NSManagedobjectModel alloc] initWithContentsOfURL:modelUrl];    //  create persistent store coordinator    NSPersistentStoreCoordinator *persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedobjectModel:managedobjectModel];    NSError *error = nil;    [persistentStoreCoordinator addPersistentStoreWithType:[store type]                                            configuration:[store configurationname]                                                      URL:[store URL]                                                   options:[store options]                                                     error:&error];    //  create managed object context    NSManagedobjectContext *context = [[NSManagedobjectContext alloc] init];    [context setPersistentStoreCoordinator:persistentStoreCoordinator];    [persistentStoreCoordinator release];    [managedobjectModel release];

然后,我使用这个新创建的NSManagedobjectContext实例执行后台提取.

一切似乎都很好.不过,我还没有接受我自己的答案,因为我希望有人能为我的调查结果提供支持或反对的证据.

总结

以上是内存溢出为你收集整理的ios – 多个NSPersistentStoreCoordinator实例可以连接到同一个底层SQLite持久性存储吗?全部内容,希望文章能够帮你解决ios – 多个NSPersistentStoreCoordinator实例可以连接到同一个底层SQLite持久性存储吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1100754.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存