当我使用我的应用程序时,有时会出现一个错误,它似乎是随机的(或者我没有弄清楚确切的时间......),然后我的所有列表都是空的(就像 CoreData 中没有任何内容一样)。但是如果我关闭我的应用程序并重新打开它,列表就会出现没有任何问题......
我在堆栈溢出上搜索了这个问题,但对我来说什么都不清楚......
错误 :
CoreData: warning: 'CDDetail' (0x2815e8790) from NSManagedObjectModel (0x2841bb8e0) claims 'CDDetail'.
2020-11-13 19:16:48.329773+0100 OrientationEPS[33705:3479327] [error] error: +[CDDetail entity] Failed to find a unique match for an NSEntityDescription to a managed object subclass
CoreData: error: +[CDDetail entity] Failed to find a unique match for an NSEntityDescription to a managed object subclass
加载持久化容器:
class OriEPS {
lazy var persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: "OrientationEPS")
container.loadPersistentStores { description, error in
if let error = error {
fatalError("Unable to load persistent stores: \(error)")
}
}
return container
}()
var context: NSManagedObjectContext {
return persistentContainer.viewContext
}
这是我获取结果的函数:
private func fetchCDDetail(withId detailId:UUID) -> CDDetail? {
let fetchRequest = NSFetchRequest<CDDetail>(entityName: "CDDetail")
fetchRequest.predicate = NSPredicate(format: "id == %@", detailId as CVarArg)
fetchRequest.fetchLimit = 1
let fetchResult:[CDDetail]? = try? context.fetch(fetchRequest)
return fetchResult?.first
}
2个问题:我应该如何解决这个错误?0x2815e8790 是什么意思?
编辑 1: 我找不到任何其他类调用 CDDetail
- 如果我将模块设置为当前产品模块(没有任何变化)
- 没有任何改变如果我更换:
- fetchRequest:NSFetchRequest = CDDetail.fetchRequest()
经过
- fetchRequest = NSFetchRequest(entityName:"CDDetail")