iPhone核心数据 - 如何根据父关系显示所选记录?

时间:2010-08-16 02:41:06

标签: iphone cocoa-touch core-data relationship

使用核心数据。假设我们有团队和玩家的模型。

假设: - 每个玩家都是一个团队的成员 - 已在xcdatamodel文件中建立了相关关系。

我有一个TeamListViewController(列出所有团队),当我选择一个团队时,我想在PlayerListViewController上看到与所选团队相关的那些玩家的列表。

然后我希望能够选择一个单独的玩家并查看PlayerViewController并查看他们的个人信息,编辑细节等。

我知道如何使用fetchResultsController来提取所有玩家的列表。

  1. 我如何最好地提取所需数据以显示所选团队的玩家?

  2. 此外,如果我只是将数据拉入数组以便显示,那么当对记录进行其他更改时,如何确保数组与核心数据保持同步?

1 个答案:

答案 0 :(得分:2)

获取符合特定条件的对象所需的是NSPredicate。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"team=Tigers"];
[fetchRequest setPredicate:predicate];

现在,获取请求返回团队属性=“Tigers”的结果。如果没有谓词,它将返回所有对象。

谓词可能变得复杂 - 您可以有多个条件,特殊运算符定义为“ANY”或“LIKE”。请参阅Predicate Programming Guide

关于第二个问题 - 您是否预计会使用多个线程访问Core Data存储?开始阅读...您需要每个线程的托管对象上下文。如果不是你基本上不需要担心。对底层商店的更改是“出现故障”,就像您跟踪与未明确提取的对象的关系一样。