2015-02-15 4 views
0

У меня заканчиваются идеи, как я могу перенести 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"; }

Любая помощь будет оценена.

ответ

0

Вам необходимо создать новый локальный магазин с другим именем.

+0

Вы имеете в виду 'myapp.sqlite' должно иметь другое имя для iCloud и Local? И неважно, что они хранятся в другом месте? – sumofighter666

Смежные вопросы