Как я могу переименовать существующую базу данных Couchbase lite (я бы хотел избежать создания новой базы данных и необходимости копировать содержимое, если это возможно). Это то же самое, что и репликация в локальную базу данных с таким же именем?
Couchbase lite переименовать базу данных
Ответы (1)
Поскольку вы сопоставляете свою локальную базу данных с удаленным сегментом дивана с помощью классов CBLReplication, я не вижу причин, по которым переименование базы данных не должно работать.
Просто убедитесь, что вы сначала закрыли свою 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, но вы должны уловить идею.