2013-05-20 4 views
1

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

Приложение должно отслеживать сеанс терапевта со своими клиентами. Таким образом, схема организована таким образом: есть таблица клиентов, клиенты имеют сеансы, сеансы имеют действия, а действия имеют показатели. В приложении эти показатели преобразуются в простые счетчики, таймеры и NSSliders.

Суть в том, что клиент хочет иметь возможность вставлять ранее выполненные действия в новые сеансы для новых клиентов. Итак, я попробовал просто выполнить простой запрос на выборку, а затем перешел к NSFetchedResultsController. Я продолжаю сталкиваться с проблемой, поскольку, поскольку Core Data является графиком объекта, я получаю массу записей активности с практически одинаковыми данными. Единственным отличительным свойством будет то, что сеанс (и если вы хотите вернуться назад, сам клиент).

Я не уверен, что это то, что мне нужно изменить в самой схеме, или если есть какой-то обходной путь, который я могу сделать в Core Data. Я уже пробовал делать отдельные результаты выборки с помощью NSFetchedResultsController, используя тип результата NSDictionaryResultType. Это вроде того, что я хочу, но я получаю только связанные свойства объекта, а не любые дочерние объекты, связанные с ним (мне нужны эти показатели, вы видите).

Любая помощь приветствуется, и я могу отправить код при желании, даже если у меня действительно нет конкретной ошибки кодирования.

ответ

1

Я не вижу проблемы. Если вы моделировали вещи с Client, Session, Activity и Metric сущностями, каждая из которых имеет отношение ко многим со своим правым и к-одному/ко многим обратным отношениям к одному слева (в порядке I перечислены сущности), нет ничего, что помешает вам добавить конкретное действие в другой сеанс (другого клиента), не так ли?

Возможно, я не понимаю вопрос.

+0

У меня есть модели, точно такие, и я согласен, я не думаю, что что-то меня остановит. Может быть, мой вопрос: «Каков наилучший способ этого?» NSFetchedResultsController дал мне смешанные результаты. – jason328

+0

@ jason328 Возможно, вам нужно написать код, чтобы получить точный объект Activity, который вы хотите. Вы делаете это с использованием 'NSFetchRequest' и' NSPredicate', как описано здесь: http://developer.apple.com/library/mac/#documentation/cocoa/Conceptual/CoreData/Articles/cdFetching.html#//apple_ref/ doc/uid/TP40002484-SW1 Затем вы можете добавить этот объект к нужному объекту Session. – 7cows

+0

@ 7cows3, ​​спасибо! – jason328

1

Просто используйте простой NSFetchRequest и задайте предикат именно для того, что вы ищете. Вы можете установить предел выборки, если вы получаете слишком много результатов, но ваш вопрос не совсем похож на вопрос ИМО.

Я считаю, что вы ищете NSPredicate, чтобы сузить результаты. Как только вы выберете конкретный объект, вы можете легко связать любое отношение или атрибут с этим объектом с помощью точечной нотации, а затем сохранить контекст.

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