核心数据 - 实体关系未按预期工作

时间:2010-06-17 15:35:20

标签: xcode core-data relationships

我已经在xcode中设置了我的数据模型

EntityA

AttA1  AttA2

EntityB

AttB1位  AttB2位  AttB3

然后我建立了关系

EntityA

名称:rlpToEntityB

目的地:EntityB

反向:rlpToEntityA

To Many:Checked

EntityB

名称:rlpToEntityA

目的地:EntityA

反转:rlpToEntityB

To Many:UnChecked

即。两者之间的关系,每个EntityA都可以拥有许多EntityB的

据我了解,如果我获取EntityB的子集,我可以检索相关EntityA的值。

我有这个工作,所以我可以使用

检索EntityB值

NSManagedObject * objMO = [fetchedResultsController objectAtIndexPath:indexPath];

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

但是,如果我尝试通过执行以下操作从EntityA检索相关值

strValueFromEntityA = [objMO valueForKey:@“AttA1”];

我收到错误“实体EntityB不符合键值Atta1的键值编码”

毫不奇怪,我想如果我切换到从EntityA获取的东西我无法访问EntityB的属性那么看起来定义的关系将被忽略。

有人能发现我做错了吗?

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

提前致谢, 内华达州

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

干杯, 内华达州