如何等待云套件数据与swiftui中的核心数据同步

问题描述 投票:0回答:1

我们的核心数据+ icloudkit 同步工作正常,但问题是当我们卸载然后安装我们的应用程序时,我们需要稍等一下,然后点击获取核心数据的请求,但我们不使用任何 DispatchQueue.main.asyncAfter(deadline: 。 now() + 8) 这个方法,所以任何其他方法可以做到这一点,或者任何方法,比如当我们的数据从 icloud 获取到核心数据时通知我,然后我们请求数据到 SwiftUi 中的核心数据

DispatchQueue.main.asyncAfter(deadline: .now() + 8) 我尝试这种方式。这种方式也工作得很好,但现在我们不想使用这种方式,所以我们如何处理

swift swiftui swift3 io
1个回答
0
投票

您可以监控

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)")
            }
        }
    }
})
© www.soinside.com 2019 - 2024. All rights reserved.