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

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。

干杯, 内华达州

【讨论】:

以上是关于核心数据 - 实体关系未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

返回ObjectsAsFaults 未按预期工作

核心图像过滤器 CISourceOverCompositing 未按预期显示与 alpha 叠加

Aspnet Core 3.1 Identity ConfirmEmail 未按预期工作

核心数据中的父实体和关系

MVC3 数据库实体未按预期初始化

获取后核心数据关系为零