2014-01-20 88 views
1

如何重命名現有的couchbase lite數據庫(我想避免創建一個新的數據庫,並且如果可能的話需要複製內容)。這是否與複製到本地具有相同名稱的數據庫相同?Couchbase lite重命名數據庫

回答

0

由於您使用CBLReplication類將您的本地數據庫映射到遠程couchbase存儲桶,因此我無法看到爲什麼重命名數據庫不應該起作用。

只要確保你首先關閉您的CBLDatabase:

database.close() 

和使用的NSFileManager爲你喜歡的數據庫mydb.cbliteCBLManager.sharedInstance().directory中移動:

let databaseManager = CBLManager.sharedInstance() 
let fileManager = NSFileManager.defaultManager() 
let sourceName = "\(database.name).cblite" 
let targetName = "my-new-name.cblite" 
if let sourcePath = NSURL(databaseManager.directory,isDirectory:true).URLbyAppendingURLComponent(sourceName).path, 
let targetPath = NSURL(databaseManager.directory,isDirectory:true).URLbyAppendingURLComponent(targetName).path{ 
    fileManager.moveItemAtPath(sourcePath,atPath: targetPath) 
} 

而且事後重新打開該連接與之前設置相同的CBLReplication數據庫:

let database = databaseManager.databaseNamed("my-new-name") 

請記住,您也可以先移動mydb attachments目錄。並重新打開連接後,確保所有的代碼使用新的參考查詢等。

PS:這裏使用的代碼是從內存寫入,所以它可能無法複製1:1 - 但你應該得到理念。