2010-05-16 4 views
0

une autre question newbie iPhone ...interface de requête magasin iPhone CoreData

Je donne les résultats suivants:

NSPersistentStoreCoordinator NSManagedObjectContext NSManagedObjectModel

Est-il possible d'exécuter des requêtes directement sur le magasin (depuis c'est une DB sqlite)? J'essaye de supprimer tous les enregistrements d'une vue de table, et j'ai pensé qu'une "table de DELETE FROM" serait gentille et rapide au lieu de boucler les disques et de les enlever manuellement (avec lesquels je me bats aussi).

Merci pour votre temps,

James

Répondre

1

données de base agit comme une enveloppe pour le magasin de données sous-jacentes, il est donc pas vraiment une bonne idée de commencer à contourner les données de base. De plus, les données de base ajoutent des informations supplémentaires à votre base de données, de sorte qu'un accès direct à la base de données peut (ou pourrait à l'avenir) poser des problèmes.

Pour supprimer tous les enregistrements via des données de base, je donne les résultats suivants:

+ (void) deleteAll { 
    NSManagedObjectContext *managedObjectContext = [(myAppDelegate*)[[UIApplication sharedApplication] delegate] managedObjectContext]; 
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:[[self class] description] inManagedObjectContext:managedObjectContext]; 
    [fetchRequest setEntity:entity]; 

    NSError *error; 
    NSArray *items = [managedObjectContext executeFetchRequest:fetchRequest error:&error]; 
    [fetchRequest release]; 


    for (NSManagedObject *managedObject in items) { 
    [managedObjectContext deleteObject:managedObject]; 
    NSLog(@"%@ object deleted",[[self class] description]); 
    } 
} 
+1

Cheers mate. Désolé pour le retard. –