Compensation CoreData et que l'intérieur

Je suis assez nouveau à CoreData et cette application qui l'utilise.
Et je suis actuellement en train de travailler sur une fonction qui efface la totalité de la base de données lorsque je me connecte à l'application.

J'ai 2 sqllite fichiers (pour une raison quelconque, ils pensaient que c'était bien pratique)

Comment puis-je effacer les deux fichiers de toutes les données et de les remettre dans un dataless état?

J'en ai essayé beaucoup de façons, suivant les guides, sur.

Comment effacer/réinitialiser tous les CoreData dans un-à-plusieurs relations

comment faire pour supprimer tous les objets de Base de Données

Ils semblent tous à l'échec pour moi.
Maintenant, je me demande ce que je fais de mal? Et peut-être quelqu'un peut m'expliquer comment réinitialiser mon 2 fichiers CoreData la bonne façon.

EDIT:

//should clear the whole coredata database. mainly used for logout mechanism
-(void)resetCoreData
{
    for (NSPersistentStore *store in self.persistentStoreCoordinator.persistentStores)
    {
//   NSPersistentStore *store = self.persistentStoreCoordinator.persistentStores[0];
        NSError *error;
        NSURL *storeURL = store.URL;
        DLog(@"storeURL: %@", storeURL);
        NSPersistentStoreCoordinator *storeCoordinator = self.persistentStoreCoordinator;
        [storeCoordinator removePersistentStore:store error:&error];
        [[NSFileManager defaultManager] removeItemAtPath:storeURL.path error:&error];

        DLog(@"There are erreurs: %@", error);
//   [self addDefaultData];
    }

    _persistentStoreCoordinator = nil;
    _managedObjectContext = nil;
    _managedObjectModel = nil;
}

Cela ne semble pas clair le CoreData pour moi.

EDIT2:

- (NSManagedObjectContext *)managedObjectContext
{
    if (_managedObjectContext != nil) {
        return _managedObjectContext;
    }
    
    NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
    if (coordinator != nil) {
        _managedObjectContext = [[NSManagedObjectContext alloc] init];
        [_managedObjectContext setPersistentStoreCoordinator:coordinator];
    }
    return _managedObjectContext;
}
- (NSManagedObjectModel *)managedObjectModel
{
if (__managedObjectModel != nil) {
return __managedObjectModel;
}
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"MyName" withExtension:@"momd"];
__managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
return __managedObjectModel;
}
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
if (__persistentStoreCoordinator != nil) {
return __persistentStoreCoordinator;
}
NSString *storePath = [[self applicationDocumentsDirectory]
stringByAppendingPathComponent:@"MyName.sqlite"];
NSFileManager *fileManager = [NSFileManager defaultManager];
//If the expected store doesn't exist, copy the default store.
if (![fileManager fileExistsAtPath:storePath]) {
NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@"MyName" ofType:@"momd"];
if (defaultStorePath) {
[fileManager copyItemAtPath:defaultStorePath toPath:storePath error:NULL];
}
}
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];
//Check to see what version of the current model we're in. If it's >= 2.0,
//then and ONLY then check if migration has been performed...
NSSet *versionIdentifiers = [[self managedObjectModel] versionIdentifiers];
DLog(@"Which Current Version is our .xcdatamodeld file set to? %@", versionIdentifiers);
if ([versionIdentifiers containsObject:@"2.0"])
{
BOOL hasMigrated = YES;
if (hasMigrated==YES) {
storePath = nil;
storePath = [[self applicationDocumentsDirectory]
stringByAppendingPathComponent:@"MyName2.sqlite"];
}
}
NSURL *storeUrl = [NSURL fileURLWithPath:storePath];
NSError *error;
NSDictionary *pscOptions = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:NO], NSInferMappingModelAutomaticallyOption,
nil];
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeUrl
options:pscOptions
error:&error]) {
DLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return __persistentStoreCoordinator;
}

Edit 3:
Je suis toujours à la recherche d'un moyen de réinitialiser mon CoreData comme si j'ai supprimé la totalité de l'app et a commencé à nouveau. Les façons habituelles de faire ne fonctionne pas pour mon cas. Et il y a 2 sqllite fichiers. Il y a des indices d'une migration qui a eu lieu à un certain point dans l'application, mais je ne sais pas trop quand et comment. Les journaux d'erreur montrent rien d'utile.

Je ne suis pas à la recherche de la manière la plus efficace. Juste la façon.

M'aider et que la générosité est la vôtre.

Edit 4:
RÉSULTAT FINAL:
Il semblait que mon héritage, code a eu un deuxième ManagedObjectContext instancié. Le moment où j'ai récupéré et fait la chasse d'eau-fonction avec elle. Les deux sqlite-fichiers ont disparu comme il était nécessaire.

Merci à tous de ce que mettre de l'effort dans mon problème.

La première chose que je peux voir, c'est que vous allez tous vous coredata trucs à néant l'intérieur de la boucle. Qui doit être ne après la boucle est terminée en cours d'exécution.
Ne fonctionne pas de toute façon. Ce que je remarque, c'est que seul l'un des 2 magasins est enregistré. Ce pourrait être une raison pour le second de ne pas être à l'intérieur de la boucle for?
Lorsque vous configurez la base de données des trucs qu'il ne devrait avoir qu'une seule banque de toute façon. Qu'un magasin contiendra toutes vos données (sauf si vous faites quelque chose qui exige en particulier plus d'une)?
C'est tout l'héritage du code. Et c'est tout un gâchis. Et j'ai juste commencé à creuser dans cette application. Pour une raison quelconque il y a 2 CoreData SQLLite fichiers et il y a un indice d'une migration de la fonction. Mais je ne vois pas un besoin pour les 2 magasins.
Ah, je vois. Avez-vous le code qui définit et initialise le coredata pile? Je peux peut-être essayer de déchiffrer ce qui se passe.

OriginalL'auteur Totumus Maximus | 2013-02-06