1

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

4

1 回答 1

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 复制 - 但您应该明白这一点。

于 2015-11-24T14:33:20.937 回答