2010-01-12 5 views
0

Я довольно новичок в Core Data, просмотрел множество руководств и форумов и не нашел изящного решения моей проблемы:Установка значения в одном объекте программно из другого объекта. Основные вопросы с данными

У меня есть три объекта в моей модели: Worker, Task , и SubTask. Каждый из них имеет отношение «многие» к сущности под ним и к одному обратному. У Работника много Заданий, каждая Задача имеет много подзадач, каждый SubTask имеет один parentTask, и каждая Задача имеет одного Рабочего. SubTask имеет атрибут startTime, который устанавливается в текущее время в методе newObject и кнопку, которая запускает метод endSubTask в моем классе SubTaskArrayController. endSubTask вычисляет время между startTime и теперь и устанавливает это значение для атрибута SubTask timeWorked. Все идет нормально. Проблема:

Каков наилучший способ получить атрибут totalTimeWorked выбранной задачи, чтобы обновить себя?

Когда я пытаюсь что-то вроде

[currentSubTask setValue:newTotalTime forKey:@"parentTask.totalTimeWorked"];

я получаю:

[SetValue: forUndefinedKey]: сущность подзадачи не значение ключа кодирования совместимый для ключа parentTask .totalTimeWorked.

Как получить доступ к атрибутам parentTask выбранного в данный момент SubTask?

ответ

5

Вы используете ключ. Вместо этого вы должны использовать setValue:forKeyPath:.

+0

D'oh. Я подумал, что это было что-то основное, чего я не видел. Благодарю. Является ли это обычной практикой или мне нужно изучить решение (NSFetchRequests?) Для задачи, чтобы вычислить ее totalTimeWorked? – jslanger

+1

Вы можете использовать '@ sum',' @ count' и друзей в ключевых путях для выполнения таких вычислений. Я бы просто сохранил продолжительность в каждой подзадаче, а затем суммировал их, а не пытался хранить их в задаче напрямую. Для простых вещей, подобных этому, вам вообще не нужно «NSFetchRequest». –

+0

«parentTask.subTask. @ Sum.timeWorked» работает отлично. Благодарю. – jslanger

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

  • Нет связанных вопросов^_^