J'écris une application pour iPhone; J'ai besoin de sauvegarder les données dans un stockage persistant, mais j'ai des problèmes ... J'ai créé une entité dans xcdatamodel et je n'ai aucun problème pour obtenir la valeur par défaut de mon attribut. Dans mes tests, je passe par le code plusieurs fois ci-dessous et je peux changer cet attribut (c'est un entier) pendant que l'application est active. Toutefois, lorsque je ferme et rouvre l'application, mon entier (myInt) revient à la valeur par défaut lorsque je m'attendais à ce que ce soit la dernière valeur à laquelle je l'ai mise à jour. Voici ce que je fais:Problèmes d'enregistrement dans un stockage persistant iphone
NSManagedObjectContext *managedObjectContext = appDelegate.managedObjectContext;
NSEntityDescription *myTestEntity = [NSEntityDescription
entityForName:@"TestEntity"
inManagedObjectContext:managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:timeStampEntity];
NSError *error = nil;
NSArray *fetchedObjects = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
if (fetchedObjects == nil) {
// TODO: Handle the error
}
for (id oneObject in fetchedObjects)
{
NSInteger myInt = [[oneObject valueForKey:@"myStoredInt"]intValue];
myInt++;
[oneObject setValue:[NSNumber numberWithInt: myInt] forKey:@"myStoredInt"];
NSError *error = nil;
if (![managedObjectContext save:&error]) {//TODO: Handle error
}
}
[fetchRequest release];
J'espérais cette ligne:
if (![managedObjectContext save:&error])
ferait le travail et enregistrer les modifications apportées au stockage persistant, mais il ne fait pas! (Avoir cette ligne à l'intérieur ou à l'extérieur de la boucle for ne change pas le résultat) Qu'est-ce que je fais de mal?
Merci beaucoup pour votre aide!
Shani, je vous remercie beaucoup! Vous aviez raison - dans mon délégué d'application, j'initiais l'objet à chaque fois: [NSEntityDescription insertNewObjectForEntityForName: @ "TestEntity" inManagedObjectContext: managedObjectContext]; Vous pouvez dire que je suis novice, je parie. Je veux le faire une seule fois - Comment savoir si je l'ai déjà fait? Merci beaucoup! – san
Salut. j'ai édité ma réponse. – shannoga
C'est Shani! Cela fonctionne comme je le voulais. Merci beaucoup – san