La mise à jour est simple que de créer un nouveau.
Pour mettre à jour un objet spécifique, vous devez configurer un NSFetchRequest
. Cette classe est équivalente à une sélection statetement en langage SQL.
Voici un exemple simple:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Favorits" inManagedObjectContext:moc]];
NSError *error = nil;
NSArray *results = [moc executeFetchRequest:request error:&error];
// error handling code
Le tableau results
contient tous les objets contenus dans le fichier sqlite. Si vous voulez prendre un objet spécifique (ou plusieurs objets de), vous devez utiliser un prédicat à cette demande. Par exemple:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"title == %@", @"Some Title"];
[request setPredicate:predicate];
Dans ce cas - results
contient les objets où le titre est égal à Some Title
. Définition d'un prédicat est égal à mettre la clause where d'une instruction SQL.
Pour plus d'informations, je vous suggère de lire la Base de Données guide de programmation et d' NSFecthRequest
classe de référence.
Espérons que cela aide.
EDIT (extrait de code qui peut être utilisé pour mettre à jour)
// maybe some check before, to be sure results is not empty
Favorits* favoritsGrabbed = [results objectAtIndex:0];
favoritsGrabbed.title = @"My Title";
// save here the context
ou si vous n'êtes pas à l'aide d'un NSManagedObject
sous-classe.
// maybe some check before, to be sure results is not empty
NSManagedObject* favoritsGrabbed = [results objectAtIndex:0];
[favoritsGrabbed setValue:@"My title" forKey:@"title"];
// save here the context
Dans les deux cas, si vous faites un save
sur le contexte, les données seront mises à jour.