2015-03-31 188 views
3

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

我可以重新加载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数据库?

回答

1

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

+0

我应该删除以前的参考,然后替换文件并创建一个新的实例吗?我应该如何删除参考?只是设为零? – Nicopuri 2015-03-31 20:15:23

+0

它不工作。在替换** db.realm **之前,我设置了'self.db = nil'并且它不起作用 – Nicopuri 2015-03-31 20:27:03

+0

请注意,您拥有的任何RLMObjects,RLMResults或RLMArrays也将持有对领域的强烈参考 – segiddins 2015-03-31 20:37:40