- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经用实体继承设置了我的核心数据模型(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/
我是一名优秀的程序员,十分优秀!