``` class CoreDataStack { // MARK: Properties private let modelName: String = "Model" var mainContext: NSManagedObjectContext { return self.storeContainer.viewContext } let storeContainer: NSPersistentCloudKitContainer init(){ self.storeContainer = NSPersistentCloudKitContainer(name: self.modelName) guard let description = self.storeContainer.persistentStoreDescriptions.first else { fatalError("###\(#function): Failed to retrieve a persistent store description.") } //turn off일때 켜기 // description.setOption(true as NSNumber, forKey: NSPersistentHistoryTrackingKey) description.setOption(true as NSNumber, forKey: NSPersistentStoreRemoteChangeNotificationPostOptionKey) self.setiCloudSync() self.storeContainer.loadPersistentStores { (storeDescription, error) in if let error = error as NSError? { fatalError("Unresolved error \(error), \(error.userInfo)") } } // MARK: Only for First time in debug // self.schemaInitiation() let context = self.storeContainer.viewContext context.mergePolicy = NSMergeByPropertyStoreTrumpMergePolicy context.automaticallyMergesChangesFromParent = true } func setiCloudSync() { let iCloudSyncOn = UserDefaults.standard.bool(forKey: "iCloudSyncOn") guard let description = self.storeContainer.persistentStoreDescriptions.first else { fatalError("###\(#function): Failed to retrieve a persistent store description.") } if iCloudSyncOn { let id = "iCloud.hanung.test" description.cloudKitContainerOptions = NSPersistentCloudKitContainerOptions(containerIdentifier: id) // if !UserDefaults.standard.bool(forKey: "didBatchUpdateForForceSync") { // self.forceSyncAll() // } } else { description.cloudKitContainerOptions = nil } } ```