1
我需要用相同的值更新所有記錄。而且我不想通過遍歷對象來完成它,因爲對於超過2000個對象需要大約2秒。基本上我有本地所有用戶,我從服務器接收用戶標識。我現在想設置「要求」,除了爲用戶假酒店需要從服務器 -如何儘快更新所有記錄?
它是如何做現在返回(這是完全錯誤的!):
迭代通的所有用戶(其中約2000 )並更正他們的請求值。
NSFetchRequest * allUsers = [[NSFetchRequest alloc] init];
[allUsers setEntity:[NSEntityDescription entityForName:@"User" inManagedObjectContext:context]];
NSArray *users = [context executeFetchRequest:allUsers error:&error];
NSArray *userIDs = [JSON objectForKey:@"users_ids"];
for (User *user in users) {
if ([userIDs containsObject:user.userID]) {
user.requested = [NSNumber numberWithBool:YES];
} else {
user.requested = [NSNumber numberWithBool:NO];
}
user.requested = [NSNumber numberWithBool:NO];
}
[context save:nil];
我知道如何做到這一點:請求= false爲一個類似SQL的一個聲明中的每個對象
集。通過服務器返回的id(平均值爲20),併爲這些設置requested = true。
// UPDATE users SET requested = false WHERE 1=1
NSArray *userIDs = [JSON objectForKey:@"users_ids"];
for (int i = 0; i < [userIDs count]; i++) {
User *user = [User userWithServerID:[userIDs[i] integerValue] usingManagedObjectContext:context];
user.requested = [NSNumber numberWithBool:YES];
}
[context save:nil];
那麼我怎樣才能用一個「查詢」更新所有的記錄?或者有沒有人有更好的想法如何實現這個(更有效的方式來做迭代也許)?
把它放在後臺線程中是一個解決方案(也許),但我仍然想在將它放入後臺線程之前先優化它。
謝謝!