0

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

实体A

AttA1 AttA2

实体B

AttB1 AttB2 AttB3

然后我建立了关系

实体A

名称:rlpToEntityB

目的地:实体B

逆:rlpToEntityA

对许多人:检查

实体B

名称:rlpToEntityA

目的地:实体A

逆:rlpToEntityB

对许多人来说:未选中

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

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

我有这个工作,所以我可以使用检索 EntityB 值

NSManagedObject *objMO = [fetchedResultsController objectAtIndexPath:indexPath];

strValueFromEntityB = [objMO valueForKey:@"AttB1"];

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

strValueFromEntityA = [objMO valueForKey:@"AttA1"];

我收到错误“实体 EntityB 与键 Atta1 的键值编码不兼容”

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

谁能发现我做错了什么?

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

在此先感谢,内夫。

4

2 回答 2

1

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

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

或者

[[objMO valueForKey: @"rlpToEntityA"] valueForKey: @"AttA1"]
于 2010-06-17T16:00:00.063 回答
1

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

干杯,内华达州

于 2010-06-22T09:48:46.107 回答