问题是我尝试从核心数据存储中检索已保存的数据但得到“故障数据”或不确定这是什么,因为我确定我正确保存了数据(有效的位置坐标) 我在视图控制器中的代码:
override func viewDidLoad() {
do {
try fetchedResultsController.performFetch()
} catch {}
fetchedResultsController.delegate = self
//fetch all pins from core data and load
let pins = fetchedResultsController.fetchedObjects as! [Pin]
mapView.addAnnotations(pins)
print(pins.count) /// 10
print(pins)
print(pins[0].coordinate)
print(pins[1].coordinate)
}
我确信每次都成功保存每个对象。
我打印出一些事实:
pins.count有一些数字。然而,这是其他印刷品的奇怪之处
我得到"data: <fault>"
并将地点归零。
Pin: 0x7fdc0b40e160> (entity: Pin; id: 0xd000000000080000 <x-coredata://50885CE6-70AB-4AA5-AA84-19D895E4F062/Pin/p2> ; data: <fault>)])
CLLocationCoordinate2D(latitude: 0.0, longitude: 0.0)
CLLocationCoordinate2D(latitude: 0.0, longitude: 0.0)
答案 0 :(得分:0)
当你得到&lt; fault&gt;时不是错误在核心数据中。它是核心数据数据处理的特征。 Core Data已经采用优化方式,在不牺牲性能的情况下保持较低的内存占用。错误技术有助于实现这一目标。它只在需要时将数据加载到内存中。由于以下原因之一,您收到错误:
1)您可能在保存数据时出错了。
2)管理核心数据的关系属性(可选和必需)时的逻辑错误。
3)核心数据无法满足故障(即从持久存储加载数据)。 (这可能是由于数字(2)逻辑错误)。即使核心数据在故障无法实现之后也不会引发异常,因为默认情况下会设法执行此操作。您在无法访问的托管对象的托管对象的所有属性中获得零。
访问http://code.tutsplus.com/tutorials/what-is-a-core-data-fault--cms-25157以获取有关故障的更多信息。你可能会对那里的错误有所了解,也可能知道你为什么会遇到这个错误。