(使用swift / Xcode beta 3)
我的项目中有两个实体 - 一个与其子项具有一对多关系的父实体。在保存上下文之前添加新对象时,一切正常。但是,在重新启动应用程序并再次获取父对象后,我收到了所有子项的“关系错误”。这就是我保存上下文的方式:
func saveContext () {
var error: NSError? = nil
let appDel:AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let context = appDel.managedObjectContext
if context == nil {
return
}
if !context.hasChanges {
return
}
if context.save(&error) {
return
}
println("Error saving context: \(error?.localizedDescription)\n\(error?.userInfo)")
abort()
}
我尝试更改 includesSubentities = true 和 setReturnsObjectsAsFaults = false ,但它似乎没有帮助。 Objective-C的“关系错误”问题的大部分答案似乎都使用了 setRelationshipKeyPathsForPrefetching ,但在Swift中使用它与NSFetchRequest似乎是不可能的。
有什么我想念的吗?
答案 0 :(得分:2)
正如GeneratorOfOne所说,故障只是意味着对象尚未被提取到内存中。并且你是正确的,你不能让这些子对象获取并且只是访问它们并不能完成这项工作。"要使对象被提取,您必须评估对象的属性,即实际使用对象中的值。
答案 1 :(得分:0)
这完全正常。除非您使用该对象,否则它会为您提供故障问题,它需要加载到内存中直到您使用它