Ich arbeite an einer Anwendung, in der wir x.x.xcdatamodel verwenden. Jetzt habe ich in demselben x.x.xcdatamodel ein Attribut in einer der Entitäten hinzugefügt. Die Anwendung stürzt ab und zeigt die Meldung "Dieser NSPersistentStoreCoordinator hat keine persistenten Speicher (Schemabekenntnis oder Migrationsfehler). Es kann keine Speicheroperation ausgeführt werden.". Ich habe versucht, viele Dinge, und ich bin auch mit leichter Migration, die Situation zu handhaben, aber das funktioniert nicht wie well.Below mein Code:Dieser NSPersistentStoreCoordinator hat keine persistenten Speicher (Schemafisammenpass oder Migrationsfehler). Es kann keine Sicherungsoperation ausführen
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
if (__persistentStoreCoordinator != nil)
{
return __persistentStoreCoordinator;
}
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"myApp.sqlite"];
NSError *error = nil;
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
NSDictionary *options = @{
NSMigratePersistentStoresAutomaticallyOption : @YES,
NSInferMappingModelAutomaticallyOption : @YES,
NSSQLitePragmasOption : @{@"journal_mode" : @"DELETE"}
};
if(![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error])
{
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
}
return __persistentStoreCoordinator;
}
- (BOOL) saveContext
{
@synchronized (_localStorage) {
//NSLog(@"----------------------------Save context called---------------------------");
BOOL result = TRUE;
NSError *error = nil;
NSManagedObjectContext *managedObjectContext = self.managedObjectContext;
if (managedObjectContext != nil)
{
//Crashes here at this line.
if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error])
{
NSLog(@"----------------------------Save context failed---------------------------");
result = FALSE;
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
}
}
//NSLog(@"----------------------------Save context completed---------------------------");
return result;
}
}
Bin ich etwas hier fehle? ODER Ist es so, als ob ich eine vollständige Migration durchführen müsste, auch wenn ich ein einzelnes Attribut in einer Entität anlege? Vielen Dank im Voraus.
Also, wenn ich ein neues Attribut hinzufügen möchten an die Entität und möchten das Update in den Laden hochladen, müssen Sie ein neues Datenmodell erstellen? auch nur für eine kleine Veränderung? –
Ja, jedes Mal, wenn Sie das Datenmodell ändern. Normalerweise haben Datenmodelle keine häufigen Änderungen, wenn sie sorgfältig geplant werden. –
Ok vielen Dank für Ihre Hilfe, hoffentlich durch Hinzufügen einer neuen Version wird dieses Problem gelöst, Problem ist, dass wir es nicht zu meinem Ende reproduzieren können, aber die App stürzt für die Benutzer, so ist es ein bisschen schwierig für mich, sicher zu sein . –