我的项目中很少发生错误(例如每100个请求)。我的部分CoreData的请求有data:<fault>
,我无法使用该数据。我真的不明白为什么会发生这种情况以及如何防止这种行为。
错误的数据输出示例:
<NSManagedObject: 0x147ea09b0> (entity: ToDo; id: 0xd000000002f40000 <x-coredata://7B4FEA6E-1B36-467E-BE14-53CC2EE8CE21/ToDo/p190> ; data: <fault>)
正常输出类似于:
<NSManagedObject: 0x147ea0790> (entity: ToDo; id: 0xd000000002f40000 <x-coredata://7B4FEA6E-1B36-467E-BE14-53CC2EE8CE21/ToDo/p189> ; data: {
created = "2016-02-19 15:04:42 +0000";
text = "Some Text";
})
我通过以下方式获取数据:
let fetchRequest = NSFetchRequest(entityName: "Example")
var examples:[NSManagedObject]
do {
let results =
try self.managedContext.executeFetchRequest(fetchRequest)
examples = results as! [NSManagedObject]
} catch let error as NSError {
print("Could not fetch \(error), \(error.userInfo)")
}
问题出在结果的例子中。代码不会跳转到catch语句中。示例与预期数据具有相同的长度。在我的下一个请求中,所有数据仍然存在。什么都没有丢失。唯一的问题是这个数据对于这个唯一的请求是空的。
我的问题出在Swift上。但我猜Objective C可能会遇到同样的问题。
一切都有帮助。提前谢谢!
答案 0 :(得分:1)
您可以使用
fetchRequest.returnsObjectsAsFaults = false
当您访问对象时使用
print(yourObject.valueForKey("yourKey")