Ios CoreData获取请求崩溃initWithCoder::无法识别的选择器已发送到实例

Ios CoreData获取请求崩溃initWithCoder::无法识别的选择器已发送到实例,ios,core-data,fetch,Ios,Core Data,Fetch,我有这样的json,在试图保存API的解码响应时,它可以工作,但在获取时崩溃 let fetchRequest=NSFetchRequest(entityName:“RouterResponse”) 让上下文=CoreDataManager.shared.persistentContainer.viewContext let details=try context.fetch(fetchRequest)//此处崩溃。 异常处理请求:,在解码值时引发。用户信息为{ NSUnderlyingE

我有这样的json,在试图保存API的解码响应时,它可以工作,但在获取时崩溃

let fetchRequest=NSFetchRequest(entityName:“RouterResponse”)
让上下文=CoreDataManager.shared.persistentContainer.viewContext
let details=try context.fetch(fetchRequest)//此处崩溃。
异常处理请求:,在解码值时引发。用户信息为{
NSUnderlyingException=“-[OpenFinanceTest.Route initWithCoder:]:发送到实例0x600002cd8980的选择器无法识别”

可转换属性有问题。RouterResponse模型中只有两个值,并且都是可转换的,可能是值转换器(与
NSCoding
相关)缺少。与可转换字典相比,您应该处理关系,这更像数据库,效率更高。当我已经子类化到NSManagedObject时,是否需要遵守NSCoding协议。此外,我可以看到所有数据都被插入数据库
NSManagedObject
不是协议,而是类。是的,您必须使用
NSCoding
对可转换属性进行编码(这与
Codable
不同)
    let fetchRequest = NSFetchRequest<RouteResponse>(entityName: "RouteResponse")
    let context = CoreDataManager.shared.persistentContainer.viewContext
    let details = try context.fetch(fetchRequest) // crashes here.