Ho già un'app in App Store che utilizza i dati principali per il salvataggio dei dati.
Ora, quando iOS 8 sta per uscire, voglio aggiungere un widget ad esso, quindi devo usare App Groups per condividere i dati tra i binari.
Un problema però - ho bisogno di cambiare la posizione del negozio per supportare i gruppi di app a tutti gli utenti esistenti.
ho scritto il seguente codice, cercando di spostare il negozio per il nuovo percorso:Aggiorna posizione di archiviazione dei dati principali per supportare gruppi di app
// Returns the persistent store coordinator for the application.
// If the coordinator doesn't already exist, it is created and the application's store added to it.
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
if (_persistentStoreCoordinator != nil) {
return _persistentStoreCoordinator;
}
NSURL *oldStoreURL = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
oldStoreURL = [oldStoreURL URLByAppendingPathComponent:@"Schooler.sqlite"];
NSURL *storeURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.com.schooler.mycontainer"];
storeURL = [storeURL URLByAppendingPathComponent:@"Schooler.sqlite"];
if([[NSFileManager defaultManager] fileExistsAtPath:oldStoreURL.path] == YES && [[NSFileManager defaultManager] fileExistsAtPath:storeURL.path] == NO)
{
// Prior today extension - Need to move to new directory
NSError *error = nil;
if([[NSFileManager defaultManager] moveItemAtURL:oldStoreURL toURL:storeURL error:&error] == YES)
NSLog(@"Migrated successfully to new database location.");
else
NSLog(@"error: %@",error);
}
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
NSError *error = nil;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
}
return _persistentStoreCoordinator;
}
L'uscita è sempre "con successo la migrazione al nuovo percorso del database.", Anche se tutti i dati salvati sul app prima è stato cancellato, come se avesse creato un nuovo database invece di spostarlo.
Quali sono le cause del problema? Come dovrei risolverlo?
Grazie.
Si prega di verificare sotto il post per una soluzione in swift. https://stackoverflow.com/questions/27253566/coredata-move-to-app-group-target/47551887#47551887 –