首页 > 解决方案 > 核心数据:“无法从此 NSManagedObjectContext 的协调器访问持久存储”

问题描述

我有一个(iOS 14.5)应用程序,它使用带有两个ManagedObjectContexts 的 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)

我正在检索我的代码NSManagedObjectviewContext该代码完美运行,不是故障,可以读取/显示。但是,当我获取该对象并尝试通过以下方式将其传递给我的背景上下文时:

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 中的错误或对象以某种方式“损坏”?我在这里抓住了稻草,因为这个对象与代码适用的其他对象没有什么不同。

任何想法都受到高度赞赏。

标签: ioscore-data

解决方案


推荐阅读