Question

Y at-il un moyen de supprimer tous les enregistrements d'un NSManagedObjectContext?

J'utilise le code suivant pour insérer des données:

NSManagedObjectContext * context = [[NSApp delegate] managedObjectContext];
NSManagedObject        * basket  = nil;

basket = [NSEntityDescription insertNewObjectForEntityForName:@"ShoppingBasket"
                                       inManagedObjectContext: context];  
[basket setValue:[firstSelectedObject valueForKey:@"accessoryID"]
          forKey: @"accessoryID"];

Comment puis-je supprimer tous les enregistrements? Je veux quelque chose qui est comme le « supprimer ». Fonction, mais pour tout supprimer

Était-ce utile?

La solution

Pour supprimer toutes les instances d'une entité donnée (nous utiliserons votre ShoppingBasket), vous pouvez simplement chercher tous les paniers puis les supprimer. Il est juste quelques lignes de code:

NSManagedObjectContext * context = [self managedObjectContext];
NSFetchRequest * fetch = [[[NSFetchRequest alloc] init] autorelease];
[fetch setEntity:[NSEntityDescription entityForName:@"ShoppingBasket" inManagedObjectContext:context]];
NSArray * result = [context executeFetchRequest:fetch error:nil];
for (id basket in result)
    [context deleteObject:basket];

L'alternative dans une application à base non-document est de fermer la connexion au magasin de données, supprimez le fichier réel, puis reconnectez (le code du modèle qui vient avec un projet standard de base de données crée automatiquement le fichier si elle est absent). Vous avez alors une nouvelle marque, magasin vide.

Notez l'exemple de code ignore toute erreur possible. Ne pas faire cela. : -)

Autres conseils

Une façon beaucoup plus rapide serait de supprimer tout entièrement magasin. De cette façon, vous n'êtes pas perdre de temps objets aller chercher, ou à travers eux que l'énumération autre réponse fait.

NSError *error;
NSURL *applicationDocumentsDirectory = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
NSURL *storeURL = [applicationDocumentsDirectory URLByAppendingPathComponent:@"MyCDStore.sqlite"];
[[NSFileManager defaultManager] removeItemAtPath:storeURL.path error:&error];

Ne pas oublier de le recréer après avoir supprimé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top