ios - 核心数据:“无法从此 NSManagedObjectContext 的协调器访问持久存储”
问题描述
我有一个(iOS 14.5)应用程序,它使用带有两个ManagedObjectContext
s 的 sqlite 数据存储。一种用于 UI,一种用于后台处理。
设置看起来像这样(其中 PersistanceController 是自动生成的):
let persistenceController = PersistenceController.shared
//Setup Background Context
let backgroundContext = persistenceController.container.newBackgroundContext()
backgroundContext.automaticallyMergesChangesFromParent = true
backgroundContext.mergePolicy = NSMergePolicy(merge: .mergeByPropertyStoreTrumpMergePolicyType)
// Setup View Context
persistenceController.container.viewContext.automaticallyMergesChangesFromParent = true
persistenceController.container.viewContext.mergePolicy = NSMergePolicy(merge: .mergeByPropertyStoreTrumpMergePolicyType)
我正在检索我的代码NSManagedObject
,viewContext
该代码完美运行,不是故障,可以读取/显示。但是,当我获取该对象并尝试通过以下方式将其传递给我的背景上下文时:
let objectInBackground = backgroundContext.object(with: objectFromViewContext.objectID)
我明白了
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Object 0x88fe03855b097dd8 <x-coredata://3A2EE926-B0E9-4D08-B508-FEA5585FDFFZ/MyEnityName/p2207> persistent store is not reachable from this NSManagedObjectContext's coordinator'*
有趣的是,我的应用程序中有大量多线程代码,而且这一直有效,但我有一个实体可重现地生成此异常。可以使用完全相同的代码检索其他对象。我想知道这是否可能是 Core Data 中的错误或对象以某种方式“损坏”?我在这里抓住了稻草,因为这个对象与代码适用的其他对象没有什么不同。
任何想法都受到高度赞赏。
解决方案
推荐阅读
- html - img 不能作为带有显示的块:以我想象的方式阻止
- angular - Angular 8 中的 Http 发布响应问题
- java - 如何在我的哈希表中修复此 ArrayIndexOutOfBoundsException?
- android - 如何制作删除按钮以删除kotlin中的recyclerview项目?
- mysql - 以下查询的 MySQL 查询优化
- python-3.x - Pandas 时间序列:对日常数据的高效操作
- react-native - 我应该进行哪些更改才能在地图上添加标记?
- python - 为什么没有在 Python 中计算完整的相关矩阵?
- node.js - 将 Jenkins X 集成到现有 GKE 的最佳方式
- python - 使用 python 和 AWS Lambda 将标头添加到 csv 文件