Каким будет лучший способ синхронизации моей схемы основных данных с удаленным API, обслуживающим JSON? В настоящий момент я просматриваю каждый словарь в ответе JSON, проверяя Core Data, чтобы узнать, существует ли идентификатор API.
Это отлично работает, но все, что осталось сделать, это удалить любые локальные объекты, которые не находятся на сервере. Вот пример моих данных JSON:
[
{
"id":1234,
"name":"My first object",
"description":"This is a long string with lots of information"
},
{
"id":1235,
"name":"My second object",
"description":"This is a long string with lots of information"
}
]
В настоящее время единственный способ, которым я могу думать об этом, - это что-то вроде следующего:
NSArray *jsonData = // Convert json data to array using NSJSONSerialization
NSInteger fetchedCount = _fetchedResultsController.fetchedObjects.count;
if (fetchedCount != jsonData.count) {
for (int i = 0; i < fetchedCount; i++) {
NSManagedObject *object = [_fetchedResultsController objectAtIndexPath: [NSIndexPath indexPathForItem:i
inSection:0]];
NSNumber *idNumber = object.apiID;
BOOL shouldDelete = YES;
for (NSDictionary *jsonDict in jsonData) {
if ([jsonDict objectForKey:@"id"] == idNumber) {
shouldDelete = NO;
}
}
if (shouldDelete) {
// Delete object.
}
}
}
Я думаю, что это будет массово неэффективно, если массив JSON содержит много объектов.