У меня заканчиваются идеи, как я могу перенести iCloud-магазин в локальный магазин. С одной стороны, я получаю сбой с сообщением:Миграция iCloud в локальный постоянный магазин
The specified persistent store was not found
на другой стороне
NSUnderlyingException = "Can't add the same store twice"
Дело в том, что не существует четкого обучающая, как перенести магазины (Или, по крайней мере, я могу найти). Все, что я нашел до сих пор, было частью информации, распространенной по сети и не имеющей особого смысла.
Это мой код:
- (NSPersistentStoreCoordinator *) cloudPersistentStoreCoordinator {
self.storeURL = [[MMNUtilities localDocumentsURL] URLByAppendingPathComponent:@"myapp.sqlite"];
NSPersistentStoreCoordinator *persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:self.managedObjectModel];
NSDictionary *storeOptions = @{NSPersistentStoreUbiquitousContentNameKey: @"myapp"};
NSError *error = nil;
self.persistentStore = [persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:self.storeURL
options:storeOptions
error:&error];
if (error) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return persistentStoreCoordinator;
}
- (BOOL) didMigrateiCloudStoreToLocalStore {
NSError *error = nil;
self.persistentStoreCoordinator = [self cloudPersistentStoreCoordinator];
NSDictionary *storeOptions = @{NSPersistentStoreUbiquitousContentNameKey: @"myapp",
NSPersistentStoreRemoveUbiquitousMetadataOption : @YES};
NSPersistentStore *localStore = [self.persistentStoreCoordinator migratePersistentStore:self.persistentStore <<< Exception happens here
toURL:self.storeURL
options:storeOptions
withType:NSSQLiteStoreType
error:&error];
if (error) {
NSLog(@"Error: %@", error.description);
[[NSNotificationCenter defaultCenter] postNotificationName:HnHCoreDataPersistentStoreMigrationFailed object:self];
return NO;
}
return [self reloadStore:localStore];
}
я получил следующее сообщение в консоли:
CoreData: error: -addPersistentStoreWithType:SQLite configuration:PF_DEFAULT_CONFIGURATION_NAME URL:file:///var/mobile/Containers/Data/Application/EFC750F6-D10E-4B8A-9F83-C77621218DB7/Documents/myapp.sqlite options:{ NSPersistentStoreRemoveUbiquitousMetadataOption = 1; NSPersistentStoreUbiquitousContentNameKey = myapp; "_NSNotifyObserversOfStoreChange" = 0; } ... returned error Error Domain=NSCocoaErrorDomain Code=134080 "The operation couldn’t be completed. (Cocoa error 134080.)" UserInfo=0x15deee80 {NSUnderlyingException=Can't add the same store twice} with userInfo dictionary { NSUnderlyingException = "Can't add the same store twice"; }
Любая помощь будет оценена.
Вы имеете в виду 'myapp.sqlite' должно иметь другое имя для iCloud и Local? И неважно, что они хранятся в другом месте? – sumofighter666