Больше проблем с синхронизацией данных в iCloud Core

Итак, это наконец случилось. Произошел наихудший сценарий для любого независимого разработчика iPhone. Несколько пользователей сообщают о завершениипотери данных после обновления моего приложения. Синхронизация данных iCloud Core не работает. Мои пользователи частично используют это приложение для управления своим бизнесом. Это действительнокатастрофический провал.

Единственное, что я изменил в связи с iCloud, - это добавление хранилища ключей в iCloud. Код основных данных остался прежним, та же версия модели (без миграции) и т. Д.

В моих тестах все работало прекрасно! Но, к моему ужасу, пользователи сообщили, что их данных больше не было, когда они открыли обновленное приложение.

Что может быть причиной этого?

постоянный URL магазина (вездесущий URL) не должен был измениться.Конфликты слияния Также маловероятно, так как эта проблема должна была возникнуть до обновления.Некоторое вмешательство в новоевездесущий магазин значений ключей возможно?

(Я в значительной степени исключил это.)

Ниже, пожалуйста, найдите код для моей модели управляемых объектов и постоянного хранилища. Дайте мне знать, если вам нужно что-то еще, чтобы оценить проблему.

- (NSManagedObjectContext *)managedObjectContext {

    if (managedObjectContext_ != nil) {
        return managedObjectContext_;
    }

    NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
    if (coordinator != nil) {
        managedObjectContext_ = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
        [managedObjectContext_ performBlockAndWait:^{
            [managedObjectContext_ setPersistentStoreCoordinator:coordinator];
            if (useICloud) {
                [managedObjectContext_ setMergePolicy:NSMergeByPropertyObjectTrumpMergePolicy];
                [[NSNotificationCenter defaultCenter] addObserver:self
           selector:@selector(mergeiCloud:)
           name:NSPersistentStoreDidImportUbiquitousContentChangesNotification
           object:coordinator];
            }
        }];
    }
    return managedObjectContext_;
}

а также

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
    if (persistentStoreCoordinator_ != nil) {
        return persistentStoreCoordinator_;
    }

    NSMutableDictionary *options = [NSMutableDictionary dictionary];
    NSURL *storeURL = [[self applicationDocumentsDirectory] 
            URLByAppendingPathComponent:@"SalesCalls.sqlite"];

    [options setObject:[NSNumber numberWithBool:YES] 
                  forKey:NSMigratePersistentStoresAutomaticallyOption];
    [options setObject:[NSNumber numberWithBool:YES] 
                  forKey:NSInferMappingModelAutomaticallyOption];

    if (useICloud) {  // this is an internal flag set to YES
        NSURL *iCloudURL = [[NSFileManager defaultManager] 
                               URLForUbiquityContainerIdentifier:nil];

        if (nil!=iCloudURL) {
            NSString *cloudData = [[iCloudURL path] 
                       stringByAppendingPathComponent:@"data"];
            iCloudURL = [NSURL fileURLWithPath:cloudData];      

            [options setObject:@"at.topofmind.salesplus.store" 
                        forKey:NSPersistentStoreUbiquitousContentNameKey];
            [options setObject:iCloudURL 
                        forKey:NSPersistentStoreUbiquitousContentURLKey];

            NSURL *nosyncDir = [iCloudURL 
                        URLByAppendingPathComponent:@"data.nosync"];
            [[NSFileManager defaultManager] createDirectoryAtURL:nosyncDir 
                        withIntermediateDirectories:YES 
                        attributes:nil error:nil];

            storeURL = [nosyncDir 
                        URLByAppendingPathComponent:@"SalesCalls.sqlite"];
        }
    }

    NSError *error = nil;
    persistentStoreCoordinator_ = [[NSPersistentStoreCoordinator alloc] 
             initWithManagedObjectModel:[self managedObjectModel]];
    if (![persistentStoreCoordinator_ 
                  addPersistentStoreWithType:NSSQLiteStoreType
                  configuration:nil URL:storeURL options:options error:&error]) 
   {
        NSLog(@"Cannot create persistent store coordinator, %@, %@", 
                        error, [error userInfo]);
        abort();
    }    

    return persistentStoreCoordinator_;
}

Комментарии, мнения, дикие догадки и т. Д. (И, конечно, решения!) Приветствуются.

ОБНОВИТЬ:

Один из моих клиентов потерял все свои данные и после переустановки и сброса всего (перезагрузка устройства и т. Д.) Он больше не мог синхронизироваться с iCloud. Символ просто не отображается в настройках.

Ответы на вопрос(1)

Ваш ответ на вопрос