与核心数据的关系错误

时间:2014-07-30 09:52:02

标签: core-data swift relationship

(使用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似乎是不可能的。

有什么我想念的吗?

2 个答案:

答案 0 :(得分:2)

正如GeneratorOfOne所说,故障只是意味着对象尚未被提取到内存中。并且你是正确的,你不能让这些子对象获取并且只是访问它们并不能完成这项工作。"要使对象被提取,您必须评估对象的属性,即实际使用对象中的值。

答案 1 :(得分:0)

这完全正常。除非您使用该对象,否则它会为您提供故障问题,它需要加载到内存中直到您使用它