2015-03-31 230 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