2014-01-10 2 views
0

У меня уже есть приложения для основных данных, синхронизированные Dropbox, и я хочу перейти на iCloud (с iCloudCoreDataStack). И имеют 2 устройства (iPhome и iPad) с теми же данными внутри.Перенос данных с основными данными на iCloud

Я обновляю приложения ipad до новых приложений с помощью icloud, все работает нормально и работает синхронно.

код миграции:

// check old if old Db exist 

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"Livre_de_Cave.sqlite"]; 

// migrate old persistentStoreCoordinator to icloud and delete it 

if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) { 

    NSLog(@"oldURL"); 




    NSURL* oldStoreURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:YES error:NULL]; 
    [oldStoreURL URLByAppendingPathComponent:@"Livre_de_Cave.sqlite"]; 
    oldStoreURL =[oldStoreURL URLByAppendingPathComponent:@"Livre_de_Cave.sqlite"]; 


    NSDictionary *options = @{NSMigratePersistentStoresAutomaticallyOption:@YES, 
           NSInferMappingModelAutomaticallyOption:@YES, 
           NSSQLitePragmasOption: @{@"journal_mode": @"DELETE"} 
           }; 

    NSPersistentStore *store = [self.managedObjectContext.persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType 

                 configuration:nil 

                   URL:oldStoreURL 

                  options:options 

                   error:&error]; 



[self.managedObjectContext.persistentStoreCoordinator migratePersistentStore:store 
                     toURL:self.storeURL 
                     options:@{ NSPersistentStoreUbiquitousContentNameKey : @"iCloudStore"} 
                        withType:NSSQLiteStoreType 
                     error:&error]; 

    //[store removePersistentStore:store error:&error]; 
    [[NSFileManager defaultManager] removeItemAtPath:oldStoreURL.path error:&error]; 


} else { 

    NSLog(@"newURL"); 
    [self.managedObjectContext.persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType 
                     configuration:nil 
                       URL:self.storeURL 
                      options:@{ NSPersistentStoreUbiquitousContentNameKey : @"iCloudStore" } 
                       error:&error]; 



} 

Когда я обновить Iphone, все записи данных ядра являются дубликатами, я под почему: я сливаю и существующий магазин с ICloud магазин с той же информацией. Если у вас есть и идея, чтобы избежать этого ...

Благодаря

ответ

0

Wait для слияния, чтобы завершить (прослушивание уведомлений Core Data), а затем проверить в магазин, чтобы увидеть, если данные уже там.

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