gpt4 book ai didi

swift - 通过将新项目保存到具有继承性的过滤提取请求,CoreData 出错

转载 作者:行者123 更新时间:2023-11-28 06:56:54 26 4
gpt4 key购买 nike

我已经用实体继承设置了我的核心数据模型(A 是 X 和 Y 的父实体)。通过执行提取请求,我有一个谓词来过滤子实体 (X) 的属性。

这是我的获取请求:

func fetchRequest() -> NSFetchRequest {
let fetchRequest = NSFetchRequest(entityName: "A")
let predicate = NSPredicate(format: "test == %@", "123")
fetchRequest.predicate = predicate
fetchRequest.includesSubentities = true
return fetchRequest
}

注意:“test”是X的一个属性。

现在,当我尝试添加新的子项(类型 Y)时,我的应用程序崩溃并抛出以下错误:

CoreData: error: Serious application error. Exception was caught during Core Data change processing. This is usually a bug within an observer of NSManagedObjectContextObjectsDidChangeNotification. [<...> valueForUndefinedKey:]: the entity Y is not key value coding-compliant for the key "test". with userInfo { ... } NSUnknownUserInfoKey = test;

最佳答案

您正在获取的实体(“A”及其子实体)与谓词之间存在不匹配,谓词正在测试仅存在于一个子实体(“X”)上的属性。

当你只有“X”时一切都很好,但是一旦你创建了一个“Y”对象,FRC 就会看到它,检查实体是否匹配它的底层提取(它确实匹配,因为“Y”是“A”的子实体)。然后它测试“Y”对象是否与谓词匹配,并发现它没有 test 属性。因此它抛出异常。

由于只有“X”对象可以匹配谓词,您应该修改提取以使用“X”实体:

let fetchRequest = NSFetchRequest(entityName: "X")

关于swift - 通过将新项目保存到具有继承性的过滤提取请求,CoreData 出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33270681/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com