2015-10-05 3 views
0

У меня есть 2 объекта («Достижение» и «ShortTermGoal»), как показано на снимке экрана.Извлечь данные из двух разных объектов в данных ядра

Я выборки данных из Achievement субъекта, где

shortTermSubGoalId = "PROVIDED_ID" 

Теперь я хочу, чтобы получить shortTermGoalName также от ShortTermGoal лица, где shortTermSubGoalId = "SAME_AS_PROVIDED_ABOVE".

Я хочу NSManagedObject должен содержать все данные Achievement сущности и shortTermGoalName от ShortTermGoal объекта (каждый объект NSManagedObject будет иметь все свойства «Достижение» + shortTermGoalName Достояние ShortTermGoal лица).

Это возможно? если да, то как?

Просьба поделиться фрагментом кода.

Достижение Entity

Achievement

ShortTermGoal Entity

ShortTermGoal

ответ

0

Вы можете получить только экземпляры NSManagedObject, которые точно соответствуют конкретной сущности Core Data. Они не составляют свойства нескольких объектов в один экземпляр 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 отношений.

+0

Я пытаюсь получить значение для KeyPath «shortTermGoal.shortTermGoalName», но я не получаю никакого значения. –

+0

po obj.valueForKeyPath ("shortTermGoal.shortTermGoalName") nil –

+0

Вы когда-либо устанавливали значение для отношений? Это то, что я сказал в последней строке ответа - это работает только в том случае, если вы в первую очередь назначаете значение отношения. –

Смежные вопросы