我对ObjC很有经验,但对Core Data来说相对较新。到目前为止,它一直很简单,但我对关系有点困惑,所以我希望有人能指出我正确的方向。
我有两个实体:一个是人员列表,另一个是事件列表。
我在两个实体之间的数据模型中建立了一个反向关系(称为“人”),人员方设置为“多对多”。换句话说,我可以有5个人,但有数千个事件;每个活动都与一个人有关,但是一个人可以负责任何数量的活动。
我使用[NSEntityDescription insertNewObjectForEntityForName ...]添加事件,然后使用NSFetchedResultsController检索它们。
问题是我在获取特定事件对象时尚未成功检索到有关某人的数据。例如:
Log *logEntry = [_fetchedResultsController objectAtIndexPath:indexPath];
// this works:
NSLog(@"description: %@", logEntry.description);
NSLog(@"happened %i minutes ago", -[logEntry.date timeIntervalSinceNow] / 60);
// this does not (just spits out NULL):
NSLog(@"person responsible: %@", logEntry.people.name);
我错过了什么?如何获取关系中人员的数据?我有一种感觉,我在首先添加日志条目时遗漏了一个重要的链接,或者在检索日志条目时可能是必要的谓词。在谈到关系和具体的例子时,Apple的文档有点不足。我可能仍然把头埋在老式SQL中,所以我真的可以使用一些帮助。谢谢!
答案 0 :(得分:2)
如果人是多人,那么它会作为一个集合返回 - 所以logEntry.people返回一个NSSet的人,你必须循环才能离开人,从而能够询问人的名字
任何与多个对象的关系都会被建模为一个集合(目前在iOS中)。