Переключить iCloud Syn c во время выполнения - PullRequest
1 голос
/ 04 февраля 2020

У меня есть приложение SwiftUI, в котором пользователь может совершать покупки в приложении с некоторыми дополнительными функциями. Одной из таких функций является iCloud syn c на нескольких устройствах. Я использую CoreData для сохранения данных пользователей. Мой постоянный контейнер:

lazy var persistentContainer: NSPersistentCloudKitContainer = {
        let container = NSPersistentCloudKitContainer(name: "store name")
        let description: NSPersistentStoreDescription? = container.persistentStoreDescriptions.first
        let remoteChangeKey: String = "NSPersistentStoreRemoteChangeNotificationOptionKey"
        if(description != nil) {
            description!.setOption(true as NSNumber, forKey: NSPersistentHistoryTrackingKey)
            description!.setOption(true as NSNumber, forKey: remoteChangeKey)
        }

        container.loadPersistentStores(completionHandler: { (storeDescription, error) in
            if let error = error as NSError? {
                fatalError("Unresolved error \(error), \(error.userInfo)")
            }
        })
        return container
    }()

Мой вопрос заключается в том, как включить / выключить облачный синхронизатор c, когда пользователь покупает подписку. Я не хочу, чтобы пользователь перезагружал приложение. Я также хочу, чтобы пользователь мог переключать эту настройку в настройках приложения.

спасибо

1 Ответ

1 голос
/ 04 февраля 2020

Объявите вашу переменную как NSPersistentContainer вместо NSPersistentCloudKitContainer. При запуске, если у пользователя облачная синхронизация c, загрузите постоянный контейнер облачного набора, в противном случае загрузите не облачный набор.

Когда коммутатор переключен, перезагрузите контейнер, следуя тем же правилам. Чтобы перезагрузить контейнер, я бы добавил свойство к объекту менеджера, в котором я бы добавил несколько методов, которые перезагружают контейнер в зависимости от настроек пользователя.

...