Swift领域备份和恢复领域数据

Swift领域备份和恢复领域数据,swift,realm,backup,restore,migrate,Swift,Realm,Backup,Restore,Migrate,我目前正在创建两个函数,用于在备份URL上备份领域文件,并在需要时恢复它 这是为了防止在域中使用应用程序时丢失数据 例如: Backup URL: .../user1-server-backup.realm Restore URL: .../user1-server.realm 备份功能会在还原URL时将域文件复制到 备份URL 恢复功能将备份URL上的域文件迁移到 还原URL 我已经使用writeCopy函数创建了一个备份函数 class func backupLocalStore(st

我目前正在创建两个函数,用于在备份URL上备份领域文件,并在需要时恢复它

这是为了防止在域中使用应用程序时丢失数据

例如:

Backup URL: .../user1-server-backup.realm
Restore URL: .../user1-server.realm
  • 备份功能会在还原URL时将域文件复制到 备份URL

  • 恢复功能将备份URL上的域文件迁移到 还原URL

我已经使用writeCopy函数创建了一个备份函数

class func backupLocalStore(storeBackupDirectoryURL: URL) -> Bool {

    let user = CSDefaults.curEmail.replacingOccurrences(of: "@", with: "")
    let sAp = CSDefaults.getPassAndServerFrom(email: user)
    let prefix = sAp.1.components(separatedBy: ".")[0]
    let file = "\(user)-\(prefix)-backup.realm"

    let backupURL = Realm.Configuration().fileURL?.deletingLastPathComponent().appendingPathComponent(file)
    // To be implemented
    // Optionally wrap in a write transaction to
    // prevent other changes happening
    realm.beginWrite()
    do {
        try realm.writeCopy(toFile: backupURL!)
    } catch {
        // Error backing up data
        return false
    }
    realm.cancelWrite()
    return true
}
现在我要做一个restore函数,将备份URL上的领域文件迁移到restore URL

我不知道如何使用正确的迁移块创建此函数,以便应用程序能够正确使用备份文件

我使用的是Swift 5和CocoaPod RealmSwift 3.17.3


提前感谢。

您是在问如何让领域使用替换文件吗?我只是问如何将领域文件恢复到现有URL。问如何将领域文件恢复到现有URL有点含糊不清。您是否需要将文件从一个URL复制到另一个URL的代码?看起来你已经有了-它不工作了吗?有什么错误吗?这项任务的具体问题是什么?是的,实际上我已经实施了。但我只是想知道,反之亦然。e、 我将使用备份的领域而不是当前的领域。你可以使用任何你喜欢的领域。然而,这一点非常重要——简言之,一旦Realm连接到数据源,只要对象不被释放,它就会继续使用该数据源,即使实际文件被删除或移动。解决方法是将领域调用封装到自动释放池中,以便在领域被删除并替换为其他领域文件时释放这些对象。你是在问如何让领域使用替换文件吗?我只是问如何将领域文件还原为现有URL。问如何将领域文件还原为现有的URL有点模糊。您是否需要将文件从一个URL复制到另一个URL的代码?看起来你已经有了-它不工作了吗?有什么错误吗?这项任务的具体问题是什么?是的,实际上我已经实施了。但我只是想知道,反之亦然。e、 我将使用备份的领域而不是当前的领域。你可以使用任何你喜欢的领域。然而,这一点非常重要——简言之,一旦Realm连接到数据源,只要对象不被释放,它就会继续使用该数据源,即使实际文件被删除或移动。解决方法是将领域调用封装到自动释放池中,以便在删除领域并替换为其他领域文件时释放这些对象。