CoreData - сомнения по поводу сохранения - PullRequest
1 голос
/ 17 августа 2011

Я начинаю с coreData, и у меня есть сомнения.

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

Чтобы сохранить данные в coreData, я делаю следующее:

    for (NSDictionary *activityData in arrayWithResult){
        [CompanyActivity createActivityWithInfoFromServer:activityData inManagedObjectContext:self.managedObjectContext];
    }

    if (![self.managedObjectContext save:&error])
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);

Это читает около 300 записей. Метод createActivityWithInfoFromServer: проверяет, существует ли какая-либо запись с таким именем. Если это так, обновляет данные, если нет, создает их.

Проблема в том, что во время выполнения цикла «for», если я взаимодействую с пользовательским интерфейсом, он перестает сохранять основные данные, иногда, не всегда. Почему?

Если я возьму СОХРАНИТЬ внутри цикла, проблема исчезнет.

Что мне делать?

Спасибо всем,

RL

1 Ответ

0 голосов
/ 17 августа 2011

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

Что касается причин, по которым он иногда не может сохранить, я предполагаю, что иногда ему не нужно создавать столько новых объектов, и он быстрее завершается, и может сохранять перед тем, как взаимодействовать с пользовательским интерфейсом.Если вы сохраняете внутри цикла for, вы сохраняете все после просмотра каждого элемента, что довольно неэффективно.

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