Cela dépend de ce que vous voulez faire. Si vous êtes en train de changer une valeur alors oui, il y a un moyen plus facile:
[[[self fetchedResultsController] fetchedObjects] setValue:someValue forKey:@"someKey"]
Ce qui ferait boucle à travers tous les objets définissant la valeur. C'est une opération KVC standard. Notez que cela augmentera la mémoire car chaque entité sera réalisée pendant la mutation.
Si vous avez besoin de faire quelque chose de beaucoup plus impliqué avec chaque entité ou si vous rencontrez un problème de mémoire, les choses deviennent un peu plus compliquées. NOTE: Ne vous inquiétez pas de la mémoire avant l'étape d'optimisation du codage. La pré-optimisation des problèmes de mémoire, en particulier avec Core Data, est une perte de temps.
Le concept consiste à boucler chaque entité et à la modifier si nécessaire. En outre, à un certain point, vous devez sauvegarder le contexte, le réinitialiser et puis vider un pool autorelease local. Cela permettra de réduire votre consommation de mémoire que vous pousserez les objets que vous venez de artificialisés de mémoire avant de tirer le lot suivant dans Par exemple:.
NSManagedObjectContext *moc = ...;
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSInteger drainCounter = 0;
for (id object in [[self fetchedResultsController] fetchedObjects]) {
//Do your magic here
++drainCounter;
if (drainCounter = 100) {
BOOL success = [moc save:&error];
NSError *error = nil;
NSAssert2(!success && error, @"Error saving moc: %@\n%@", [error localizedDescription], [error userInfo]);
[moc reset];
[pool drain], pool = nil;
pool = [[NSAutoreleasePool alloc] init];
drainCounter = 0;
}
}
BOOL success = [moc save:&error];
NSError *error = nil;
NSAssert2(!success && error, @"Error saving moc: %@\n%@", [error localizedDescription], [error userInfo]);
[pool drain], pool = nil;
Cela permet de garder l'utilisation de la mémoire vers le bas, mais il est cher! ! Vous rencontrez un disque après 100 objets. Cela ne devrait être utilisé après que vous avez confirmé que la mémoire est un problème.