Есть ли уведомление, когда CoreData заканчивает чтение данных с диска? - PullRequest
2 голосов
/ 08 октября 2011

У меня есть приложение Mac (не для документов), которое использует CoreData.

При запуске приложения оно считывает данные, хранящиеся в файловой системе.

Мне нужно настроить некоторые вещи в - (void) applicationDidFinishLaunching на основе информации, хранящейся в CoreData.

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

Если я выполняю настройку в - (void) applicationDidFinishLaunching , я не работаю. Если я сделаю это через несколько секунд, это сработает!

Thx!

1 Ответ

1 голос
/ 11 октября 2011

Если вы используете контроллеры объектов, которые автоматически подготавливают свой собственный контент, вы можете наблюдать arrangedObjects, чтобы узнать, когда они загрузили свой контент.Это не гарантирует, что фактические объекты не являются неисправностями.Фактически, это одна из основных сильных сторон Core Data: объекты лениво загружаются с диска.

Если вы по какой-то причине хотите убедиться, что большая часть дисковой активности была выполнена в applicationDidFinishLaunching, вы можете выполнитьпользовательский выбор, который определенно не возвращает объекты как ошибки.Посмотрите «предварительную выборку» в документации Core Data.Тем не менее, нет никакой гарантии, что Базовые Данные не повредят эти объекты позднее из-за ограничений памяти, что приведет к чтению другого диска при повторной загрузке этих объектов.

Конечно, вы также можете использовать NSBinaryStoreType, и в этом случае все хранилище загружается в память синхронно, когда оно добавляется в координатор постоянного хранилища.

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