如何重命名现有的couchbase lite数据库(我想避免创建新的数据库,如果可能的话,必须复制内容)。这与复制到本地具有相同名称的数据库是否相同?
答案 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的比例复制 - 但你应该明白这一点。