与核心数据的关系错误
Posted
技术标签:
【中文标题】与核心数据的关系错误【英文标题】:Relationship fault with core data 【发布时间】:2014-07-30 09:52:01 【问题描述】:(使用 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 一起使用似乎是不可能的。
我有什么遗漏吗?
【问题讨论】:
关系故障很好。就核心数据而言,故障并不是真正的对象。它尚未实现,因此当您尝试访问属性时,它会从持久存储中获取并构建对象。 您好,谢谢您的回答。不幸的是,我无法获取这些子对象,而仅仅访问它们并不能完成这项工作。 请展示您如何尝试获取父对象及其子对象的代码。 @Paweł 你有解决方案吗? 【参考方案1】:正如 GeneratorOfOne 所说,错误只是意味着对象尚未被提取到内存中。而且您是正确的,您“无法获取这些子对象并且仅访问它们并不能完成这项工作。”要获取对象,您必须评估对象的属性,即实际使用对象中的值。
【讨论】:
【参考方案2】:这很正常。除非您使用该对象,否则它会给您带来错误问题,它希望加载到内存中直到您使用它
【讨论】:
以上是关于与核心数据的关系错误的主要内容,如果未能解决你的问题,请参考以下文章