我有2个实体("成就"和" ShortTermGoal"),如屏幕截图所示。
我从成就实体中获取数据
shortTermSubGoalId = "PROVIDED_ID"
现在我想从shortTermGoalName
实体ShortTermGoal
获取shortTermSubGoalId = "SAME_AS_PROVIDED_ABOVE"
。
我想要NSManagedObject
应包含来自成就实体的所有数据和来自shortTermGoalName
实体的ShortTermGoal
(NSManagedObject
的每个对象都具有"成就&#的所有属性34; + shortTermGoalName
ShortTermGoal
实体的属性。
有可能吗? 如果是的话怎么样?
请分享代码段。
成就实体
ShortTermGoal实体
答案 0 :(得分:0)
您只能获得与特定核心数据实体完全对应的NSManagedObject
实例。他们不会将多个实体的属性组合成一个NSManagedObject
实例。这只是Core Data无法像SQL一样工作的方式之一 - 您没有获取结果表,而是直接获取模型对象。
核心数据通过您配置的关系有不同的处理方式。
如果您获取Achievement
的实例,您将获得该实体的所有属性。您还可以使用已有的ShortTermGoal
关系访问相关shortTermGoal
实体的所有属性。您可以通过以下几种方式获得shortTermGoalName
的值:
如果 为您的实体创建了自定义NSManagedObject
子类,那么如果您有Achievement
,
let achievement : Achievement = // Created somewhere else
let name = achievement.shortTermGoal?.shortTermGoalName
如果您尚未为您的实体创建自定义NSManagedObject
子类,那么如果您的NSManagedObject
对应Achievement
,
let achievement : NSManagedObject = // Created somewhere else
let name = achievement.valueForKeyPath("shortTermGoal.shortTermGoalName")
请注意,这假设您实际已为shortTermGoal
关系分配了一个值。