2016-03-01 3 views
0

Привет, я использую CoreData + MagicalRecord 3 для управления данными в своем приложении. До тех пор все работало нормально, но потом я понимаю, что в производстве, чем мое приложение замерзает, как ад! Итак, я начал исследовать, зная о том, что, чтобы не застрять пользовательский интерфейс, лучше иметь основной контекст и фоновый контекст и сохранять материал в фоновом режиме и т. Д.Настройка CoreData в памяти с помощью MagicalRecord 3

Тем не менее, мне приходится подвергать сомнению из-за моей настройки , Я использую систему хранения в системе памяти CoreData (для лучшей производительности), и я не забочусь о хранении данных на диске моего приложения, я в порядке с изменчивой моделью, которая будет уничтожена, когда приложение будет убито или в фоновом режиме слишком долго. Я просто хочу найти свои данные с любого контроллера и без связи.

Итак, у меня есть несколько вопросов: 1) Если бы я использовал один уникальный контекст, что произойдет, если я НИКОГДА не сохраню его в хранилище памяти? Например, если я MR_createEntity, то я извлекаю этот объект из контекста и обновляю его, обновляется ли он повсюду или мне нужно его сохранить, чтобы он мог быть обновлен? Другим термином был интерес для сохранения в памяти, где вы не хотите постоянно сохранять данные?

2) Если я использую 1 уникальный контекст, который я объявляю фоновым, если я покажу свой экран до того, как мои данные будут сохранены, экран не сможет найти и отобразить мои данные правильно? Разве я не использую NSFetchResultController?

ответ

1

1) вы хотите сохранить свои данные даже в магазине памяти по нескольким причинам. Во-первых, чтобы вы могли правильно использовать основные данные в том случае, если вы можете изменить свое мнение и сохранить свои данные. Во-вторых, вы, скорее всего, захотите получить доступ и обработать некоторые данные в разных потоках/очередях. В этом случае вам придется использовать механизмы безопасности данных Core Data для потоков/очередей. Магазин является самым низким уровнем, на котором Core Data будет синхронизировать данные по потокам (по-старому). Это может быть менее важно, если вы используете вложенные контексты для синхронизации ваших данных (новый способ). Но даже при вложенных контекстах вам потребуется сохранить вызов, чтобы ваши изменения слились в контекстах. Core Data не очень нравится, когда вы сохраняете в магазине nil.

2) Вы можете создавать и использовать свой собственный контекст для отображения данных. NSFetchedResultsController делает много работы на ногах для прослушивания правильных уведомлений и обеспечения того, что вы получаете очень конкретные обновления для данных, которые вы запрашивали в первую очередь. NSFRC не всегда необходим, но, безусловно, будет самым простым способом начать.

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