2010-06-17 127 views
0

我已经建立了在Xcode我的数据模型,像这样核心数据 - 实体关系工作不正常

EntityA

AttA1 AttA2

EntityB

AttB1位 AttB2位 AttB3

然后我建立了关系

EntityA

名称:rlpToEntityB

目的地:EntityB

逆:rlpToEntityA

许多:经过

EntityB

名称:rlpToEntityA

目的地:EntityA

逆:rlpToEntityB

许多:未选中

即两者之间的关系,其中EntityA的每一个可以有很多EntityB的

这是我的理解是,如果我取EntityB的一个子集我可以检索相关EntityA的值。

我有这种工作,这样我可以使用检索EntityB值

NSManagedObject * objMO = [fetchedResultsController objectAtIndexPath:indexPath];

strValueFromEntityB = [objMO valueForKey:@“AttB1”];

不过,如果我尝试做以下

strValueFromEntityA =检索来自EntityA相关值objMO valueForKey:@ “AttA1”];

我得到的错误“实体EntityB不是键值编码兼容的关键Atta1”

毫不奇怪我想,如果我转乾坤从EntityA获取如此觉得我无法访问EntityB的属性定义的关系图被忽略。

任何人都可以发现我做错了什么吗?

我承认我对iPhone编程非常陌生,特别是核心数据,所以请在我身上轻松一下,并提供详细的解释或指向特定资源的方向。我已经下载了苹果示例应用程序(核心数据手册,热门歌曲和食谱),但我仍然无法解决这个问题。

在此先感谢, 内华达州

回答

1

你不能在一个实体从另一实体获得的属性直接。借用您的术语,你应该做这样的事情:

(实体B) - >(关系到A) - >(A的属性)

[[objMO valueForKey: @"rlpToEntityA"] valueForKey: @"AttA1"] 
1

非常感谢你的回应,但我现在已经解决了我自己的问题。虽然我确定你的回应有一些优点,但这不是我用来解决我的问题的。 (也许我没有解释得很好,因此反应不足),但总之我需要使用valueForKeyPath方法而不是valueForKey。

Cheers, Nev。