【发布时间】:2018-12-09 08:48:53
【问题描述】:
我是 CoreData 的新手,我正在尝试创建一个缓存机制,其中在从 API 解析对象后,我将它们保存到数据模型中,然后再次获取它以在 tableview 上显示它。我正在尝试使用NSFetchedResultsController 获取它。在初始化 NSFetchedResultsController 时,我遇到了这个运行时异常:
2018-12-09 15:03:20.493509+0800 [5184:148001] [error] error:
No NSEntityDescriptions in any model claim the NSManagedObject subclass
'Product' so +entity is confused. Have you loaded your
NSManagedObjectModel yet ?
CoreData: error: No NSEntityDescriptions in any model claim the
NSManagedObject subclass 'Product' so +entity is confused. Have you
loaded your NSManagedObjectModel yet ?
2018-12-09 15:03:20.493718+0800[5184:148001] [error] error: +
[Product entity] Failed to find a unique match for an
NSEntityDescription to a managed object subclass
CoreData: error: +[Product entity] Failed to find a unique match for an
NSEntityDescription to a managed object subclass
可能是什么原因?
【问题讨论】:
-
在创建持久化容器时是否拼错了模型名称?
-
仔细检查,我没有拼错
-
找到了罪魁祸首!!在实例化 fetchrequest 时,我应该使用
NSFetchRequest<Product>(entityName: "Product")而不是Product.fetchRequest() as! NSFetchRequest<Product>。 -
tldr;初始化你的 NSManagedObjectContext。这是我在尝试调试我的 Coredata 问题时遇到的少数 stackoverflow 问题之一,所以我将把我的解决方案放在这里。在我开始删除/打印之前,我有各种方法/功能工作,这并不重要。但我最近处理的函数之间的区别在于上下文没有初始化。在分配上下文之前,我使用 fetchrequest 调用我的泛型类型 E。所以希望这对某人有所帮助。
-
此错误的另一个原因可能是创建了一个新实体并且它的设置与其他实体不同。我指的是实体检查器中的 Module 和 Codegen 字段。