iCloud Sync не отправляет данные через контейнер повсеместного использования
Вопрос
Я уже давно использую 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
Уведомления пустые.
Я искренне надеюсь, что кто -то видел/испытал это раньше, потому что через две недели исчерпая каждую проспекту, о котором я могу подумать, чтобы найти и исправить это самостоятельно, я чувствую, что сейчас остановлен.
Решение
Я понял это. По сути, журналы транзакций оказались испорченными или неуместными. Я переработал способ возобновления устройств и немедленно опубликую результаты На мой предыдущий вопрос