Основные данные: синхронизация данных из Rest API - PullRequest
0 голосов
/ 24 декабря 2018

Я запрашиваю данные из Rest API и затем сохраняю их в базу данных с основными данными.

Первый результат API

  1. A
  2. B
  3. C

Второй результат API

  1. A
  2. C

Мы должны удалить 'B', потому что исчезли из результата API.В настоящее время мы удаляем все данные в таблице перед добавлением новых данных, но это выглядит не так.

Мой вопрос заключается в том, как обнаружить удаленные данные и удалить их в базе данных с наименьшей нагрузкой на процессор?

У меня есть возможность выбрать тип хранилища Core Data ( память и sqlite ) и я не могу использовать NSBashRequest

1 Ответ

0 голосов
/ 26 декабря 2018

Когда мне нужно было это сделать, я сделал это, выбрав все, чего не было в новом наборе входящих данных, и удалив все в результате выборки.Это работает, только если у вас есть какой-то уникальный идентификатор - если ваши A, B и C являются уникальными идентификаторами, которые не имеют дубликатов.

Код будет выглядеть примерно так:

  1. Сначала получите все уникальные идентификаторы, найденные в новых входящих данных.Если входящие объекты находятся в массиве с именем restResults, это будет что-то вроде

    NSArray *incomingUniqueIDs = [restResults valueForKey:@"uniqueID"];
    
  2. Выполнить запрос выборки с предикатом, который находит все с уникальным идентификатором, который не в новом списке.Что-то вроде

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"uniqueID not in %@", incomingUniqueIDs];
    

Затем выполните выборку и удалите все, что он найдет.В вашем случае, во второй раз, incomingUniqueIDs будет содержать A и C.Предикат получит только B.Вы удалите эту запись, и все будет готово.

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