2016-02-02 12 views
1

Я работаю над ios-приложением, которое использует функцию репликации couchbase-lite. Эта репликация начинается с фоновой выборки. После нескольких тестов на реальном устройстве, кажется, работает, но когда я пытаюсь запустить эту репликацию на заблокированном устройстве есть ошибки как этотОшибка репликации ios couchbase-lite

Failed to Load DB 'DBNAME': Error Domain=SQLite Code=23 "authorization denied" UserInfo={NSLocalizedDescription=authorization denied} 



error opening!: 23 

Когда я запустить приложение, я выполните следующие действия, чтобы создать менеджер

var error:NSError? 
let options:CBLManagerOptions = CBLManagerOptions(readOnly: false, fileProtection: NSDataWritingOptions.DataWritingFileProtectionCompleteUntilFirstUserAuthentication) 
let poptions:UnsafePointer<CBLManagerOptions> = UnsafePointer<CBLManagerOptions>.init(UnsafeMutablePointer<CBLManagerOptions>.alloc(1).initialize(options)) 
manager = CBLManager(directory: CBLManager.defaultDirectory(), options: poptions, error: &error) 

Любые идеи по устранению этой проблемы? Эта ошибка появляется только в том случае, если iphone заблокирован!

Спасибо.

+0

Является ли ваши данные за логин? Что произойдет, если вы удалите учетные данные для входа и только что это будет открытая база данных на устройстве блокировки? – sweetiewill

+0

Да, это из-за этого пароля. Но он также должен работать в фоновом режиме и с помощью этого пароля. Кажется, что ios блокирует доступ к данным, когда устройство заблокировано:/ – Lukas

+0

Это связано с iOS Data Protection (https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/AddingCapabilities/ AddingCapabilities.html). В основном, когда вы блокируете устройство, файлы шифруются, а база данных не может быть прочитана или записана. – borrrden

ответ

2

Проблема решена, см правильную инициализацию ниже cblmanager:

var error: NSError? 
let cbloptions = CBLManagerOptions(readOnly: false, fileProtection: NSDataWritingOptions.DataWritingFileProtectionNone) 
let cblpoptions=UnsafeMutablePointer<CBLManagerOptions>.alloc(1) 
cblpoptions.initialize(cbloptions) 
manager = CBLManager(directory: CBLManager.defaultDirectory(), options: cblpoptions, error: &error) 
Смежные вопросы