Couchbase lite重命名数据库

时间:2014-01-20 22:17:23

标签: couchbase couchbase-lite

如何重命名现有的couchbase lite数据库(我想避免创建新的数据库,如果可能的话,必须复制内容)。这与复制到本地具有相同名称的数据库是否相同?

1 个答案:

答案 0 :(得分:0)

由于您使用CBLReplication类将本地数据库映射到远程couchbase存储桶,因此我无法看到为何无法重命名数据库的任何原因。

请确保先关闭CBLDatabase:

database.close()

使用NSFileManager根据需要在mydb.cblite内移动数据库CBLManager.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的比例复制 - 但你应该明白这一点。