Intereting Posts
В первом примере RxSwift завершается сбой «Невозможно вызвать« combLatest »с списком аргументов …» Beacon не открывает iOS Как обмениваться изображения с помощью UIActivityViewController Как передавать информацию между двумя UIViewControllers в a в UITabBarController Мое приложение падает при легкой миграции Является ли настройка UISearchField частной Пользовательская ячейка в UITableView не будет перезагружаться правильно после изменения данных в ячейке Как решить эту автоматку «головоломка» с ограничениями? Удалить красную деструктивную кнопку из ActionSheet Внутреннее имя swift 2.0+? Получите контактную информацию о титане из родного приложения для контактов iOS Поп навигационный контроллер Как изменить положение метки (рамки) UINavigationBar? Как программно открыть мой UINavigationController? Не удается получить доступ к классам My Swift в приложение Objective-C

iCloud & CoreData: уведомление при изменении в iCloud Store (первый запуск с существующими данными iCloud)

Я пытаюсь получить сообщение, когда местный магазин переходит в iCloud Store.

Это критическое событие. Таким образом, мой вариант использования – это новое устройство, получающее iCloud Store после запуска с пустым хранилищем. Я хотел бы уведомить мнение об обновлении с полученным контентом.

Я инициализирую свой контекст управляемых объектов следующим образом:

[self.managedObjectContext.persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:self.storeURL options:@{ NSPersistentStoreUbiquitousContentNameKey : @"iCloudStore", [NSNumber numberWithBool:YES]: NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES]:NSInferMappingModelAutomaticallyOption} error:&error]; 

Следующим шагом будет получение следующих уведомлений:

 NSNotificationCenter *dc = [NSNotificationCenter defaultCenter]; [dc addObserver:self selector:@selector(storesWillChange:) name:NSPersistentStoreCoordinatorStoresWillChangeNotification object:psc]; [dc addObserver:self selector:@selector(storesDidChange:) name:NSPersistentStoreCoordinatorStoresDidChangeNotification object:psc]; [dc addObserver:self selector:@selector(persistentStoreDidImportUbiquitousContentChanges:) name:NSPersistentStoreDidImportUbiquitousContentChangesNotification object:psc]; 

Я думал, что реализация обновления ui в name:NSPersistentStoreCoordinatorStoresDidChangeNotification должна сделать что-то. Но почему-то кажется, что это то, что я намеревался сделать.

Изменить: со связанной записью в принятом ответе я мог бы решить мою проблему

Я проверяю идентификатор пользователя в

например: storesDidChange:

 NSNumber *storeVal = [note.userInfo objectForKey:NSPersistentStoreUbiquitousTransitionTypeKey]; if (storeVal.integerValue == NSPersistentStoreUbiquitousTransitionTypeInitialImportCompleted) { //you are now in sync with iCloud NSLog(@"On iCloud Store now"); [self.delegate storeHasChanged]; } 

См. Ссылку ниже для описания обработки событий изменения хранилища Core Data. Учтите, что первое уведомление storeDidChange идентично независимо от состояния вашего магазина. Однако, если это первый раз, когда вы создаете хранилище. И уже есть магазин iCloud, вы получите еще одно уведомление storeDidChange после завершения первоначального импорта существующего iCloud.

Проблема в том, что вы не знаете, какова ситуация до того, как это произойдет, ЕСЛИ вы не знаете, что вы создаете новый магазин, а магазин уже существует в iCloud.

К сожалению, как отмечалось в моем объяснении, нет реального переключения между локальным хранилищем и хранилищем iCloud, однако Core Data каким-то образом импортирует хранилище sideLoad, после чего вы получаете уведомление типа перехода 4 (второе хранилищеDidChange).

Также имейте в виду, что если ваш магазин нуждается в обновлении до новой версии модели, вы также получите целую кучу storeDidChange уведомлений …

http://ossh.com.au/design-and-technology/software-development/sample-library-style-ios-core-data-app-with-icloud-integration/sample-apps-explanations/handling-icloud- счета-переходы /

Вы также можете проверить, как примерные приложения выполняют то, что вы пытаетесь сделать по одной и той же ссылке. http://ossh.com.au/design-and-technology/software-development/sample-library-style-ios- ядро-данные приложение-с-ICloud-интеграция /