我们的核心数据+ icloudkit 同步工作正常,但问题是当我们卸载然后安装我们的应用程序时,我们需要稍等一下,然后点击获取核心数据的请求,但我们不使用任何 DispatchQueue.main.asyncAfter(deadline: 。 now() + 8) 这个方法,所以任何其他方法可以做到这一点,或者任何方法,比如当我们的数据从 icloud 获取到核心数据时通知我,然后我们请求数据到 SwiftUi 中的核心数据
DispatchQueue.main.asyncAfter(deadline: .now() + 8) 我尝试这种方式。这种方式也工作得很好,但现在我们不想使用这种方式,所以我们如何处理
您可以监控
NSPersistentCloudKitContainer.eventChangedNotification
.onReceive(NotificationCenter.default.publisher(for: NSPersistentCloudKitContainer.eventChangedNotification), perform: { notification in
guard let event = notification.userInfo?[NSPersistentCloudKitContainer.eventNotificationUserInfoKey]
as? NSPersistentCloudKitContainer.Event else {
return
}
print("iCloud \(event.type)")
if event.endDate == nil {
print("\tis in Progress")
} else if let _ = event.endDate {
//Done
switch event.succeeded{
case true:
print("\tsucceeded")
case false:
print("\tfailed. 🛑")
if let error = event.error{
print("\t \(error)")
}
}
}
})