2013-09-08 2 views
-1

Я кодирую iOS 6.1 и работаю с Core Data.Получение основных данных и получение точного количества объектов

У меня есть сущность; назовите его NextID.

Когда я устанавливаю свое соединение с данными Core, файл NextID.sqlite создается, когда я делаю шаг addPersistentStoreWithType.

На данный момент у меня есть по существу пустая база данных.

Затем я создаю запрос выборки и запускаю его против объекта Entity, и я возвращаю fetchedResultsController.

Я считаю объекты, хранящиеся в FetchedResultsController, и получаю нуль, как я ожидал.

Затем я создаю и инициализирую новый объект для объекта NextID.

В качестве теста, я считаю снова с fetchedResultsController.count и снова получаю нулевое значение, которое является правильным, я думаю.

Затем я сохраняю свой контекст.

И затем снова проверяю с помощью fetchedResultsController.count - и снова получаю ноль.

Теперь я озадачен.

Затем я прочитал следующее о fetchedObjects:.

«Массив результатов отражает состояние в памяти управляемых объектов в управляемом контексте объекта контроллера, а не их состояние в постоянном хранилище Возвращаемый массив не , однако обновление, поскольку управляемые объекты вставляются, изменяются или удаляются ».

Это кажется противоречивым заявлением для меня. «Массив результатов отражает состояние управляемых объектов в памяти в контексте управляемого объекта контроллера» и «Возвращенный массив, однако, не обновляется, поскольку управляемые объекты вставлены, изменены или удалены». мне кажется, что я имею дело с перекрестными целями.

Но, несмотря на это, я думаю, что если я хочу получить точный счет, когда я делаю fetchedResultsController.count, тогда мне нужно сохранить и затем повторно выбрать, прежде чем я попрошу обновить счет.

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

Я нахожусь на правильном пути здесь и думаю об этих вещах разумным образом?

+0

возможно дубликат [основных данных: \ [NSFetchedResultsController -fetchedObjects \], этот метод будет отражать изменение объекта] (http://stackoverflow.com/questions/13391934/core-data-nsfetchedresultscontroller-fetchedobjects-will- this-method-reflec) –

ответ

0

Поездка деревянного кола через это сердце. Я думаю, на мой вопрос отвечает here. Спасибо всем.

0

использование магической записи, если вы новичок в основных данных. его легко интегрировать: здесь являются учебные пособия: http://ablfx.com/blog/article/2

http://yannickloriot.com/2012/03/magicalrecord-how-to-make-programming-with-core-data-pleasant/#sthash.GNErDSr8.8VBBav02.dpbs

+0

MagicalRecord использует тот же NSFetchedResultsController, что и «простое» приложение с основными данными, поэтому это не отвечает на вопрос. –

0

Edit: Что сказал Gallymon. Период.

Что Gallymon сказал, и: NSFetchedResultsController имеет методы делегирования, уведомляющие вас о новых/обновленных/удаленных элементах/разделах. Те могут либо помочь вам, либо запутать вас еще больше (я стремлюсь к первому :)).

+0

Методы делегатов FRC * указаны в ссылке Gallymon :-) –