Hi,
ich habe eine iCloud DB am Speicherplatz A möchte die jetzt aber zum Speicherplatz B haben. Lange hatte ich kein Plan, wie ich es machen soll, bis ich vorhin hier auf diese Methode gestoßen bin migratePersistentStore:toURL:options:withType:error:. Das habe ich natürlich gleich ausprobiert aber macht es irgendwie nicht. Denn wenn ich jetzt meinen Store erstelle habe ich eine komplett leere DB. Was mache ich falsch?
Hier mein Code:
Alles anzeigen
Der NSPersistentStoreCoordinator und der NSPersistentStore ist nicht nil.
Viele Grüße
Nils
ich habe eine iCloud DB am Speicherplatz A möchte die jetzt aber zum Speicherplatz B haben. Lange hatte ich kein Plan, wie ich es machen soll, bis ich vorhin hier auf diese Methode gestoßen bin migratePersistentStore:toURL:options:withType:error:. Das habe ich natürlich gleich ausprobiert aber macht es irgendwie nicht. Denn wenn ich jetzt meinen Store erstelle habe ich eine komplett leere DB. Was mache ich falsch?
Hier mein Code:
Quellcode
- [MagicalRecord setupCoreDataStackWithiCloudContainer:nil
- contentNameKey:@"database-v1"
- localStoreNamed:@"cloud-database.sqlite"
- cloudStorePathComponent:@"logs"
- completion:^{
- NSPersistentStoreCoordinator *coordinator = [NSPersistentStoreCoordinator MR_defaultStoreCoordinator];
- NSError *error;
- NSFileManager *fileManger = [NSFileManager defaultManager];
- NSString *dataFileName = @"Database.sqlite";
- NSString *iCloudDataDirectoryName = @"Data.nosync";
- NSURL *iCloudURL = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
- NSString *iCloudDataPath = [[[iCloudURL path] stringByAppendingPathComponent:iCloudDataDirectoryName] stringByAppendingPathComponent:dataFileName];
- if([fileManger fileExistsAtPath:[[iCloudURL path] stringByAppendingPathComponent:iCloudDataDirectoryName]] == NO) {
- NSError *fileSystemError;
- [fileManger createDirectoryAtPath:[[iCloudURL path] stringByAppendingPathComponent:iCloudDataDirectoryName] withIntermediateDirectories:YES attributes:nil error:&fileSystemError];
- if(fileSystemError != nil) {
- NSLog(@"Error creating database directory %@", fileSystemError);
- }
- }
- // remove previous local version
- if ([fileManger fileExistsAtPath:iCloudDataPath]) {
- [fileManger removeItemAtPath:iCloudDataPath error:nil];
- }
- [coordinator migratePersistentStore:[NSPersistentStore MR_defaultPersistentStore] toURL:[[NSURL alloc] initFileURLWithPath:iCloudDataPath] options:[[NSPersistentStore MR_defaultPersistentStore] options] withType:NSSQLiteStoreType error:&error];
- if (error) {
- NSLog(@"%@", error);
- }
- }
Der NSPersistentStoreCoordinator und der NSPersistentStore ist nicht nil.
Viele Grüße
Nils
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von AppleDeveloper ()
Muss doch gehen. Habe ich irgendwas übersehen?