0

我对 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 感到困惑,所以我真的可以使用一些帮助。谢谢!

4

1 回答 1

2

如果 people 是多个人,那么它将作为一个集合返回 - 所以 logEntry.people 返回一个 NSSet 的人,你必须循环它才能取出 People,从而能够询问人的姓名。

与多个对象的任何关系都被建模为一组(目前在 iOS 中)。

于 2011-05-02T20:43:30.167 回答