2013-06-10 2 views
0

В моем представленииWillAppear Я выполняю несколько запросов на выборку. Я заметил, что при первом запросе выборки ничего не найдено, хотя я знаю, что элементы должны быть найдены. Я попробовал спящий основной поток перед выполнением первого запроса на выборку, и были найдены достаточное количество элементов. Я просто работаю на симуляторе тоже.Основные данные iOS «Время инициализации»?

Так что мой вопрос в том, что Core Data занимает некоторое время, чтобы «инициализировать» или что-то еще? Должен ли я беспокоиться об этом при тестировании на устройстве (у меня пока нет членства в разработчике, поэтому я не могу проверить его на устройстве)? Есть ли способ «проверить», если безопасно выполнить запрос на выборку?

Я также проверил NSError для первого запроса на выборку без задержки и был равен нулю.

EDIT:

Моего viewWillAppear код был предложен так вот она. Не очень полезно.

[NSThread sleepForTimeInterval:0.1]; 
    for (NSString *category in self.categories) { 
     [self updateSection:category]; 
    } 

self.cateogires - это только мои разделы моего вида таблицы и updateSection: обновляет разделы.

EDIT2:

Я сделал некоторые дальнейшее изучение с заявлениями NSLog и вот что я нашел.

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

Category1 has 3 values 
Doc is open? NO 
Category2 has 6 values 
Doc is open? NO 
Category3 has 3 values 
Doc is open? NO 
Category4 has 2 values 
Doc is open? NO 

Я думаю, что моя проблема в том, что я не использую в completionHandler из [myManagedDocument openWithCompletionHandler:] ждать и выполнить мою просьбу выборки. Однако почему же я получаю результаты fet, если я запрашиваю, когда документ закрыт?

+0

Можете ли вы опубликовать код из своего метода просмотраWillAppear? – Alex

+0

Возможно, ваш контекст управляемого объекта или постоянный координатор хранилища или что-то еще в вашем стеке сохранения не инициализирован и равен нулю? Вызов запроса выборки на объекте nil не приведет к ошибке, он просто ничего не сделает в соответствии с политикой Objective-C для вызовов на nil. – morningstar

+0

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

ответ

0

Я предлагаю вам попробовать changingconcurrency type к

NSMainQueueConcurrencyType. Это сделает операции последовательными.

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