我已经在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编程非常陌生,特别是核心数据,所以请放轻松我并提供详细的解释或指出我的特定资源方向。我已经下载了苹果样本应用程序(核心数据书籍,热门歌曲和食谱),但我仍然无法解决这个问题。
提前致谢, 内华达州
答案 0 :(得分:1)
您无法直接从另一个实体获取一个实体的属性。借用你的术语,你应该做这样的事情:
(实体B) - >(与A的关系) - >(A的属性)
或
[[objMO valueForKey: @"rlpToEntityA"] valueForKey: @"AttA1"]
答案 1 :(得分:1)
非常感谢您的回复,但我现在已经解决了我自己的问题。虽然我确定你的回答有一些优点,但这不是我用来解决问题的方法。 (也许我没有很好地解释它因此缺少响应)但总之我需要使用valueForKeyPath方法而不是valueForKey。
干杯, 内华达州