2014-01-20 13 views
1

Как я могу переименовать существующую базу данных couchbase lite (я бы хотел избежать создания нового db и скопировать содержимое, если это возможно). Это то же самое, что и репликация на локальную базу данных с таким же именем?Couchbase lite переименовать базу данных

ответ

0

Поскольку вы привязываете свою локальную базу данных к удаленному контейнеру couchbase с использованием классов 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 - но вы должны получить идея.

Смежные вопросы