核心数据 - 实体关系未按预期工作
Posted
技术标签:
【中文标题】核心数据 - 实体关系未按预期工作【英文标题】:Core Data - Entity Relationships Not Working as expected 【发布时间】:2010-06-17 15:35:19 【问题描述】:我已经像这样在 xcode 中设置了我的数据模型
实体A
AttA1 AttA2
实体B
AttB1 AttB2 攻击者B3
然后我建立关系
实体A
名称:rlpToEntityB
目的地:实体B
逆:rlpToEntityA
对许多人:已选中
实体B
名称:rlpToEntityA
目的地:实体A
逆:rlpToEntityB
对许多人:未选中
即EntityA中的每个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 非常陌生,所以请放轻松,提供详细的解释或为我指明特定资源的方向。我已经下载了苹果示例应用程序(核心数据书籍、热门歌曲和食谱),但仍然无法解决。
提前致谢, 内华达州
【问题讨论】:
【参考方案1】:您不能直接从另一个实体获取一个实体的属性。借用你的术语,你应该这样做:
(实体 B)->(与 A 的关系)->(A 的属性)
或
[[objMO valueForKey: @"rlpToEntityA"] valueForKey: @"AttA1"]
【讨论】:
【参考方案2】:非常感谢您的回复,但我现在已经解决了我自己的问题。虽然我确信您的回答有一定的价值,但这并不是我用来解决问题的方法。 (也许我没有很好地解释它,因此缺乏响应)但总之我需要使用 valueForKeyPath 方法而不是 valueForKey。
干杯, 内华达州
【讨论】:
以上是关于核心数据 - 实体关系未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章
核心图像过滤器 CISourceOverCompositing 未按预期显示与 alpha 叠加