La aplicación no sincroniza los cambios de Core Data con iCloud

Tengo algunos NSLogs configurados para garantizar que la aplicación sincronice los cambios con iCloud, pero he esperado media hora y los cambios no se están sincronizando. Aquí está el código que tengo para los datos centrales. El Core Data Store se almacena dentro del directory de documentos porque quiero que siga funcionando si pierde el acceso a iCloud, y no quiero que pierda la database que se perderá en esa instancia.

Los datos principales se configuran y realizan cambios en los datos de forma normal, pero no parecen sincronizarse con iCloud.

- (void)mergeChangesFromiCloud:(NSNotification *)notification { NSLog(@"changes from iCloud"); NSManagedObjectContext* moc = [self managedObjectContext]; [moc performBlock:^{ [moc mergeChangesFromContextDidSaveNotification:notification]; NSNotification* refreshNotification = [NSNotification notificationWithName:@"SomethingChanged" object:self userInfo:[notification userInfo]]; [[NSNotificationCenter defaultCenter] postNotification:refreshNotification]; }]; } #pragma mark - Core Data Objects - (NSManagedObjectContext *)managedObjectContext { if (_managedObjectContext != nil) { return _managedObjectContext; } NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]; if (coordinator != nil) { _managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType]; [_managedObjectContext performBlockAndWait:^{ [_managedObjectContext setPersistentStoreCoordinator:coordinator]; [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(mergeChangesFromiCloud:) name:NSPersistentStoreDidImportUbiquitousContentChangesNotification object:coordinator]; }]; } return _managedObjectContext; } - (NSManagedObjectModel *)managedObjectModel { if (_managedObjectModel != nil) { return _managedObjectModel; } _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:DATABASE_MODEL_URL]; return _managedObjectModel; } - (NSPersistentStoreCoordinator *)persistentStoreCoordinator { if (_persistentStoreCoordinator != nil) { return _persistentStoreCoordinator; } NSURL *storeURL = [NSURL fileURLWithPath:STORE_PATH]; _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; NSMutableDictionary *options = [NSMutableDictionary dictionary]; [options setObject:[NSNumber numberWithBool:YES] forKey:NSMigratePersistentStoresAutomaticallyOption]; [options setObject:[NSNumber numberWithBool:YES] forKey:NSInferMappingModelAutomaticallyOption]; NSFileManager *fileManager = [NSFileManager defaultManager]; NSURL *iCloud = [fileManager URLForUbiquityContainerIdentifier:nil]; NSLog(@"icloud: %@", iCloud); if (iCloud) { NSString *iCloudLogsDirectoryName = @"Logs"; NSURL *iCloudLogsPath = [NSURL fileURLWithPath:[[iCloud path] stringByAppendingPathComponent:iCloudLogsDirectoryName]]; //Create logs directory, in case it doesn't exist if([fileManager fileExistsAtPath:[iCloudLogsPath path]] == NO) { NSLog(@"logs directory doesn't exist"); NSError *fileSystemError; [fileManager createDirectoryAtPath:[[iCloud path] stringByAppendingPathComponent:iCloudLogsDirectoryName] withIntermediateDirectories:YES attributes:nil error:&fileSystemError]; if(fileSystemError != nil) { NSLog(@"Error creating database directory %@", fileSystemError); } NSString *iCloudEnabledAppID = @"ID REMOVED FROM STACK OVERFLOW"; [options setObject:iCloudEnabledAppID forKey:NSPersistentStoreUbiquitousContentNameKey]; [options setObject:iCloudLogsPath forKey:NSPersistentStoreUbiquitousContentURLKey]; [_persistentStoreCoordinator lock]; [_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:nil]; [_persistentStoreCoordinator unlock]; } else { [_persistentStoreCoordinator lock]; [_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:nil]; [_persistentStoreCoordinator unlock]; } } [[NSNotificationCenter defaultCenter] postNotificationName:@"SomethingChanged" object:self userInfo:nil]; return _persistentStoreCoordinator; } 

Edit: El problema fue que el código addPersistantStore estaba en el lugar incorrecto, en términos de corchetes. Debería haber sido un soporte más bajo.