Я только что добавил опцию для пользователя, чтобы переключать Cloud Syn c внутри моего приложения, где я сохраняю, хочет ли пользователь использовать iCloud syn c в UserDefaults в разделе «useCloudSyn c». Я загружаю свой persistentContainer, когда приложение запускается с:
class CoreDataManager {
static let sharedManager = CoreDataManager()
private init() {}
lazy var persistentContainer: NSPersistentContainer = {
var useCloudSync = UserDefaults.standard.bool(forKey: "useCloudSync")
let containerToUse: NSPersistentContainer?
if useCloudSync {
containerToUse = NSPersistentCloudKitContainer(name: "App")
} else {
containerToUse = NSPersistentContainer(name: "App")
let description = containerToUse!.persistentStoreDescriptions.first
description?.setOption(true as NSNumber, forKey: NSPersistentHistoryTrackingKey)
}
guard let container = containerToUse, let description = container.persistentStoreDescriptions.first else {
fatalError("Hey Listen! ###\(#function): Failed to retrieve a persistent store description.")
}
description.setOption(true as NSNumber, forKey: NSPersistentStoreRemoteChangeNotificationPostOptionKey)
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
...
return container
}
}
Когда пользователь переключает облачный син c с помощью UISwitcher, я изменяю значение для «useCloudSy c» в UserDefaults, но приложение не Не используйте NSPersistentCloudKitContainer
, пока они не закроют приложение и не запустят его снова. Я хотел бы, чтобы контейнер менялся правильно, когда пользователь переключает коммутатор, чтобы начать загрузку своих данных из iCloud.
Как я могу перейти на NSPersistentCloudKitContainer
и обратно, когда пользователь переключает "CloudSyn c "