Couchbase lite переименовать базу данных

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


person Akeem    schedule 20.01.2014    source источник


Ответы (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, но вы должны уловить идею.

person Marco Betschart    schedule 24.11.2015