2014-01-20 52 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 - 但你应该得到理念。