CoreData故障 - 如何获取数据

时间:2014-01-14 04:33:34

标签: ios core-data relationship fault

我研究了大量有关CoreData返回故障而非实际值的问题和文档:

Relationship 'whiskers' fault on managed object (0xb7abab0)

当我试图计算胡须数量时会发生这种情况,例如:

self.numWhiskersLabel.text = [NSString stringWithFormat:@"%d", cat.whiskers.count];

即使我尝试直接记录胡须,我仍然会遇到错误:

NSLog(@"whiskers: %@", cat.whiskers);

我理解“在需要访问该对象的实际值之前,核心数据不会返回完整对象。在此之前,每个返回的对象都将是'错误'。”这很好,但此时需要访问实际值。我现在需要价值!那么如何摆脱这种矛盾呢?如何才能将访问集合的计数视为需要该值?

2 个答案:

答案 0 :(得分:1)

我没有从我的评论中得到任何反馈,所以我只是假设胡须是一组NSManagedObjects

最初不会加载该集,因为内部它来自数据库中的另一个表。当你访问 .whiskers.count 时,它仍然不需要去获取数据,因为你想要的只是集合中的胡须数量。

当你从镜子中拉出一个胡须时,它会出现故障,尝试

NSLog(@"whiskers: %@", [cat.whiskers.anyObject anyProperty]);

那应该给你一个加载的NSManagedObject。

答案 1 :(得分:0)

这是错误情况。 NSManagedObject实例出了点问题。要么在您访问它之前删除它,要么您试图从错误的线程触摸它。

请修改您的问题并显示正在访问NSManagedObject的代码。

此外,在调试器中,您只需执行po cat时会发生什么?您是否看到了完整的Cat对象,或者是否也出现了错误错误?