Чтение основных данных в приложении Serial Queue для iPhone - PullRequest
0 голосов
/ 18 марта 2012

У меня есть приложение, которое использует данные ядра, а значения извлекаются из ссылки в Интернете.

Это работает абсолютно нормально, когда я создаю последовательную очередь в AppDelegate, и у меня нет проблем с этим.

Теперь, когда я пытаюсь воссоздать аналогичный сценарий в UITableViewController и выполняю его в последовательной очереди, но когда элемент управления достигает

NSError *error;
NSArray *match = [context executeFetchRequest:fetchRequest error:&error];

контроль выполнения исчезает, а затем этот код остается в исполнении до вечности.

Может кто-нибудь помочь мне с тем, что именно здесь не так?

К вашему сведению, я передаю тот же ManagedObjectContext в последовательную очередь.

1 Ответ

0 голосов
/ 18 марта 2012

Последнее предложение может быть ключевым: контексты управляемого объекта не предназначены для использования более чем одним потоком / очередью. См. Раздел параллелизма в Руководстве по программированию Core Data для получения дополнительной информации об этом. Если вашему приложению требуется поддержка только iOS 5+, вы можете решить эту проблему (и избавиться от управления собственной последовательной очередью) с помощью нового частного контекста очереди , добавленного в 5.0. В противном случае вы должны убедиться, что каждый поток / очередь имеет свой собственный контекст и что вы передаете только безопасную информацию (например, идентификаторы управляемых объектов) из одного контекста в другой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...