【问题标题】:Backup and Restore realm.io database备份和恢复 realm.io 数据库
【发布时间】:2015-03-31 19:24:09
【问题描述】:

我需要备份我的默认 realm.io 数据库并从 Dropbox 中恢复它。我正在使用Dropbox-iOS-SDK 上传和下载它。当我尝试用备份替换当前数据库文件(例如 default.realm)时,RLMRealm 对象在缓存中,我无法清除该缓存,因此无法创建数据库。

我可以重新加载 RLMRealm 对象吗?

代码如下:

    func reloadDB(fromPath: String) {
        let defaultParentPath = RLMRealm.defaultRealmPath().stringByDeletingLastPathComponent
        let dbPath = defaultParentPath.stringByAppendingPathComponent("db.realm")
        let dbLockPath = defaultParentPath.stringByAppendingPathComponent("db.realm.lock")

        NSFileManager.defaultManager().removeItemAtPath(dbPath, error: nil)
        NSFileManager.defaultManager().removeItemAtPath(dbLockPath, error: nil)

        NSFileManager.defaultManager().copyItemAtPath(fromPath, toPath: dbPath, error: nil)

        self.db = RLMRealm(path: dbPath, readOnly: false, error: nil)

        NSFileManager.defaultManager().removeItemAtPath(fromPath, error: nil)
    }

备份 Realm.io 数据库的最佳方法是什么?

【问题讨论】:

    标签: ios objective-c database swift realm


    【解决方案1】:

    从 Dropbox 备份和恢复 Realm 文件应该可以正常工作,因为数据库只是一个文件。但是,您必须确保在删除之前没有对现有领域的任何引用。

    【讨论】:

    • 我应该删除之前的引用,然后替换文件并创建一个新实例吗?我应该如何删除引用?只是设置为零?
    • 它不起作用。我在替换 db.realm 之前设置了self.db = nil,但它不起作用
    • 请注意,您拥有的任何 RLMObjects、RLMResults 或 RLMArrays 也将持有对领域的强引用
    • 太棒了!!我忘记了一个参考
    猜你喜欢
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    • 2021-09-14
    相关资源
    最近更新 更多