【问题标题】:How can I remove iCloud sync from core data database如何从核心数据数据库中删除 iCloud 同步
【发布时间】:2018-06-21 18:43:14
【问题描述】:

我有一个应用程序,它使用旧的 iCloud 同步,我想删除此功能。 因此,当我尝试从persistentStoreCoordinator 的选项中删除“NSPersistentStoreUbiquitousContentNameKey”时,我将丢失整个数据库项目。有人知道我必须做什么吗?数据库迁移?

    let containerPath = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.de.companyName.appname")?.path
    let sqlitePath = NSString(format: "%@/%@", containerPath!, "AppName")
    let url = URL(fileURLWithPath: sqlitePath as String)

    var coordinator: NSPersistentStoreCoordinator? = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel)
    var error: NSError? = nil

    var failureReason = "There was an error creating or loading the application's saved data."
    let mOptions = [NSPersistentStoreUbiquitousContentNameKey: "AppNameCloud", NSMigratePersistentStoresAutomaticallyOption: true, NSInferMappingModelAutomaticallyOption: true] as [String : Any]
    do {
        try coordinator!.addPersistentStore(ofType: NSSQLiteStoreType, configurationName: nil, at: url, options: mOptions)
    } catch var error1 as NSError {
        error = error1
        coordinator = nil
        // Report any error we got.
        var dict = [String: AnyObject]()
        dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data" as AnyObject?
        dict[NSLocalizedFailureReasonErrorKey] = failureReason as AnyObject?
        dict[NSUnderlyingErrorKey] = error
        error = NSError(domain: "YOUR_ERROR_DOMAIN", code: 9999, userInfo: dict)

        // Replace this with code to handle the error appropriately.
        // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
        NSLog("Unresolved error \(error), \(error!.userInfo)")
        abort()
    } catch {
        fatalError()
    }

    return coordinator

【问题讨论】:

    标签: ios swift core-data icloud


    【解决方案1】:

    迁移是我要做的。删除普遍存在的内容键使 Core Data 加载不同的持久存储。由于它是新的和空的,因此您现有的数据不存在。

    您要做的是加载现有的 iCloud 数据存储,然后使用 NSPersistentStoreCoordinator 上的 migratePersistentStore(_:to:options:withType:) 方法将所有数据移动到非 iCloud 存储。完成后,开始使用新的商店文件。

    【讨论】:

      猜你喜欢
      • 2016-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-07
      • 1970-01-01
      • 2014-03-25
      相关资源
      最近更新 更多