2016-02-02 5 views
1

Je travaille sur une application ios, qui utilise la fonctionnalité de réplication de couchbase-lite. Cette réplication démarre en arrière-plan. Après quelques essais sur un dispositif réel, il semble fonctionner, mais quand je tente de démarrer cette réplication sur un appareil verrouillé il y a des erreurs comme celle-ciErreur de réplication ios couchbase-lite

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



error opening!: 23 

Quand je commence l'application, je fais ce qui suit pour créer le directeur

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) 

Des idées pour résoudre ce problème? Cette erreur n'apparaît que si l'iphone est verrouillé!

Merci.

+0

Vos données sont une procédure de connexion? Que se passe-t-il si vous supprimez les informations de connexion et que vous avez juste une base de données ouverte sur le dispositif de verrouillage? – sweetiewill

+0

oui, c'est à cause de ce mot de passe. Mais il devrait également fonctionner en arrière-plan et avec ce code d'activation. Il semble que ios bloque l'accès aux données alors que l'appareil est verrouillé:/ – Lukas

+0

Cela concerne iOS Data Protection (https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/AddingCapabilities/ AddingCapabilities.html). Fondamentalement, lorsque vous verrouillez le périphérique, les fichiers sont cryptés et la base de données ne peut pas être lue ou écrite. – borrrden

Répondre

2

Problème résolu, voir l'initialisation correcte du cblmanager ci-dessous:

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)