Я также поиграл с CoreData и iCloud, и он отлично работает.Я хотел бы перечислить некоторые важные моменты, которые могут помочь вам пойти дальше:
- Вы должны запустить приложение на реальном устройстве с iCloud Acc
- Убедитесь, что вы добавили
Push Notification
и iCloud
возможность вашего приложения.Убедитесь, что у вас нет проблем Дэйва с контейнером iCloud (в этом случае вы увидите красный текст в сеансе iCloud в XCode) - Для автоматического обновления представления вам необходимо добавить эту строку в свойСтек основных данных:
container.viewContext.automaticallyMergesChangesFromParent = true
.
Код:
public lazy var persistentContainer: NSPersistentCloudKitContainer = {
/*
The persistent container for the application. This implementation
creates and returns a container, having loaded the store for the
application to it. This property is optional since there are legitimate
error conditions that could cause the creation of the store to fail.
*/
let container = NSPersistentCloudKitContainer(name: self.modelName)
container.viewContext.automaticallyMergesChangesFromParent = true
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
// Replace this implementation with code to handle the error appropriately.
// fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
/*
Typical reasons for an error here include:
* The parent directory does not exist, cannot be created, or disallows writing.
* The persistent store is not accessible, due to permissions or data protection when the device is locked.
* The device is out of space.
* The store could not be migrated to the current model version.
Check the error message to determine what the actual problem was.
*/
fatalError("Unresolved error \(error), \(error.userInfo)")
}
})
return container
}()
- Когда вы добавляете некоторые данные, обычно вы должны увидеть, что журнал консоли начинается с
CloudKit: CoreData+CloudKit: ..........
- Иногда данныене синхронизируется сразу, в этом случае я принудительно закрываю приложение и создаю новое, после чего данные синхронизируются.
- Был один раз, данные синхронизируются через несколько часов: (