2013-07-10 3 views
1

У меня есть концептуальный запрос SQL, который использует группу, на основные таблицы данных т следующим образом:ИОС таблица с данными, которые сгруппированы по

выберите A, B, сумму (с) c_sum от т группы а, б;

Использование основных данных Я могу выполнить запрос (как описано в потоке GROUP BY with SUM() using Core Data). Я хотел бы использовать NSFetchedResultsController. Я попытался следующие:

  1. В моей работе «обновить», я пытался использовать выборки запроса, соответствующего указанной выше группы по запросу непосредственно, но столкнулся с проблемой «NSFetchedResultsController не поддерживает как отслеживание изменений и выборки запроса-х с NSDictionaryResultType ".

  2. Тогда я подумал о следующем. Сохраните записи в таблице t. Затем запустите указанный выше запрос и сохраните результат в другой таблице t1. Свяжите nsfetchedresultscontroller с регулярной выборкой из t1. К сожалению, в этом случае я столкнулся с проблемой, что группа по запросу ничего не видит в db, поскольку операция сохранения документа асинхронна.

  3. Чтобы устранить эту проблему, я попытался сохранить документ сразу после того, как ввел в таблицу t, но затем я получил сообщение об ошибке «Этот NSPersistentStoreCoordinator не имеет постоянных хранилищ. Он не может выполнять операцию сохранения».

Очевидной альтернативой для меня, чтобы сделать группу, и суммы программно, а затем вставить данные в t1, но я думал, что я хотел бы спросить здесь, чтобы увидеть, если у других есть какие-либо мысли. Второй, который я еще не пробовал, - это прослушать уведомление о сохранении документа, а затем вставить в t1. Другой альтернативой является не использование nsfetchedresultscontroller - чего я бы хотел избежать.

Мысли?

Спасибо!

UPDATE: OK обнаруживая сохранить уведомление, а затем населяющих t1 от т с использованием сгруппированных по делам запросов, но не является хорошим решением, потому что: 1. Я милость, когда операция сохранения происходит 2. Каждый время сохраняется, таблица заселена, что явно не является хорошей идеей.

ответ

0

OK. Я, наконец, понял, как сохранить контекст, т. Е. Как успешно выполнить вариант 3 без участия в упомянутой ошибке. Опция 3 включает использование UIDocument saveToURL: forSaveOperation: completeHandler: операция. Вот что я пробовал. Но ошибка, которую я сделал, заключалась в том, что я создавал новый экземпляр UIManaged Document с тем же URL-адресом, что и исходный экземпляр документа (с управляемым контекстом, который я использовал).

Итак, теперь в моем представленииWillAppear, я сохраняю документ также как свойство, в то же время сохраняю свойство управляемого контекста. Затем, когда я запускаю saveToUrl, я использую экземпляр документа свойства - в этом случае я не получаю ошибку «Этот NSPersistentStoreCoordinator не имеет постоянных хранилищ. Он не может выполнять операцию сохранения».

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