После получения списка пользовательских uid с сервера мне нужно обновить довольно большое количество объектов Users с тем же значением. Сервер возвращает массив пользовательских идентификаторов, как это:Эффективное обновление большого количества записей данных ядра
{
"ids": [1, 2, 3, 4]
}
Там может быть более 100 идентификаторов здесь (локальная таблица пользователей имеет 2k + записи), так что я ищу, как эффективный подход, как это возможно. Сначала мне нужно поставить уже isOpened значения 0. В терминах SQL мне нужно сделать что-то вроде этого:
UPDATE users SET isClosed = 0 WHERE isClosed = 1
UPDATE users SET isClosed = 1 WHERE userId IN (1, 2, 3, 4)
В основном я, решая проблему, когда пользователь не использовал приложение в течение длительного периода времени , для массового обновления атрибута isClosed.
Теперь, чтобы получить выборку и «отобразить» часть проблемы. Я не мог понять, как сделать правильный запрос на резервное копирование, не отображая ответ на объекты ... Пожалуйста, сообщите, если есть более правильный способ сделать это ... поэтому я делаю базовый запрос на резервное/afnetworking получить:
[[[RKObjectManager sharedManager] HTTPClient] getPath:[NSString stringWithFormat:@"/api/%@/closeUsers", [[MyCredentialStore sharedInstance] userId]]
parameters:nil
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSArray *userIDs = [responseObject objectForKey:@"ids"];
NSLog(@"%@", userIDs);
// 1. set the default value for isClosed (0) for all users
// 2. update the users with userIDs to isClosed = 1
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
// response code is in operation.response.statusCode
}];
Теперь как я могу сделать 1. и 2. в блоке успеха? Или есть ли подходящий способ резервного копирования для пакетных обновлений?
Работает как очарование. И это довольно быстро. Не знаю, почему меня беспокоила производительность. – digitaljerry