iCloud Sync не отправляет данные через контейнер повсеместного использования

StackOverflow https://stackoverflow.com/questions/9346503

Вопрос

Я уже давно использую iCloud в своих приложениях, и недавно у меня возникает проблема, когда устройства отказываются разговаривать друг с другом. Или, по крайней мере, это то, что я подумал, пока не начал регистрировать методы, где происходит слияние. Мой persistentStoreCoordinator настроен, как описано в Предыдущий мой вопрос.

Проблема в следующей. При настройке моего managedObjectContext, Я добавляю к нему наблюдателя, чтобы просмотреть nspersistentstoredidimportubiquiTousContentChangeSnotification уведомление, подобное следующему:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(mergeChangesFrom_iCloud:) name:NSPersistentStoreDidImportUbiquitousContentChangesNotification object:coordinator];

куда coordinator настройка как NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator].

Мои методы iCloud следующие:

- (void)mergeiCloudChanges:(NSNotification *)note forContext:(NSManagedObjectContext *)moc {
    NSLog(@"insert %@", [[note userInfo] valueForKey:@"inserted"]);
    NSLog(@"delete %@", [[note userInfo] valueForKey:@"deleted"]);
    NSLog(@"update %@", [[note userInfo] valueForKey:@"updated"]);
    [moc mergeChangesFromContextDidSaveNotification:note];

    NSNotification *refreshNotification = [NSNotification notificationWithName:@"RefreshAllViews" object:self userInfo:[note userInfo]];
    [[NSNotificationCenter defaultCenter] postNotification:refreshNotification];
}

- (void)mergeChangesFrom_iCloud:(NSNotification *)notification {
    NSLog(@"merging changes");
    NSManagedObjectContext *moc = [self managedObjectContext];
    [moc performBlock:^{
        [self mergeiCloudChanges:notification forContext:moc];
    }];
}

Итак, теперь у нас есть реальная проблема

Сначала синхронизация прошла безупречно. Данные с одного устройства были изменены, затем это изменение появилось на другом устройстве. Но сейчас ничего. Любопытная часть в тех журналах, которые вы видите в mergeiCloudChanges:forContext:. Анкет Слияние на самом деле происходит. Я вижу это вызвано. Но insert, delete, а также update Части заметки слияния всегда без контента. Таким образом, слияние происходит, но без данных. Для жизни я не могу понять, почему это или как заставить ее снова синхронизировать. Любая помощь будет более чем оценена.

Примечание: я также использую NSUbiquitousKeyValueStoreDidChangeExternallyNotification уведомление для моего NSUbiquitousKeyValueStore (который я использую для синхронизации NSUserDefault ключевые значения), и эти уведомления передают и обновляются без каких-либо икот вообще, что еще больше смущает меня в том, почему persistentStoreCoordinator Уведомления пустые.

Я искренне надеюсь, что кто -то видел/испытал это раньше, потому что через две недели исчерпая каждую проспекту, о котором я могу подумать, чтобы найти и исправить это самостоятельно, я чувствую, что сейчас остановлен.

Это было полезно?

Решение

Я понял это. По сути, журналы транзакций оказались испорченными или неуместными. Я переработал способ возобновления устройств и немедленно опубликую результаты На мой предыдущий вопрос

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top