我研究了大量关于 CoreData 返回错误而不是实际值的问题和文档:
Relationship 'whiskers' fault on managed object (0xb7abab0)
当我试图计算 mustache 的数量时会发生这种情况,例如:
self.numWhiskersLabel.text = [NSString stringWithFormat:@"%d", cat.whiskers.count];
即使我尝试直接记录 mustache 集,我仍然会出错:
NSLog(@"whiskers: %@", cat.whiskers);
我理解“在需要访问该对象的实际值之前,核心数据不会返回完整的对象。在此之前,您返回的每个对象都将是一个‘故障’。”这很好,但是此时需要访问实际值。我现在需要值(value)!那么我该如何摆脱这种矛盾呢?访问 Set 的计数怎么可能不被认为需要该值?
最佳答案
我没有从我的评论中得到任何反馈,所以我假设 whiskers 是一组 NSManagedObjects
该集合最初不会加载,因为它在内部来自数据库中的另一个表。当您访问 .whiskers.count 时,它仍然不需要去获取数据,因为您需要的只是集合中的 mustache 数量。
当你从集合中拔出一根 mustache 时,它就会出错,试试看
NSLog(@"whiskers: %@", [cat.whiskers.anyObject anyProperty]);
那应该给你一个加载的 NSManagedObject。
关于ios - CoreData故障-如何获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21106159/