2016-06-22 14 views
0

Ich verwende Couchbase Lite für meine iOS App. Ich schließe die Datenbank in mein App-Paket ein und habe keine Replikation. (Ich weiß, es ist ein bisschen komisch, Couchbase ohne Replikation zu verwenden, aber das ist der Fall)Zugriff couchbase lite Datenbank direkt aus dem Bundle?

Das Problem ist, dass ich keinen Weg finden kann, direkt aus dem Bündel auf die Datenbank zuzugreifen, da replaceDatabaseNamed es in das Dokumentverzeichnis kopieren wird. Da die Datenbank riesig ist, möchte ich sie nicht auf dem iPhone des Benutzers mit einer Version im Bundle und einer im Dokumentenverzeichnis duplizieren.

Kennen Sie eine Möglichkeit, die Datenbank nicht zu kopieren und direkt aus dem App-Bundle darauf zuzugreifen?

Antwort

1

Dies funktioniert für mich und öffnet die Datenbank erfolgreich Nur-Lese aus dem Bündel ...

CBLManagerOptions options; 
options.readOnly = YES; 
_manager = [[CBLManager alloc] initWithDirectory:[[NSBundle mainBundle] resourcePath] options:&options error:&error]; 

if (error == nil) { 
    // load an existing database 
    _database = [_manager existingDatabaseNamed:named error:&error]; 
} 

Eine Sache, hier hinzuzufügen ist, dass, wenn Sie CBLView haben Objekte, die Sie sicher, dass sie, bevor Sie fahren werden vornehmen müssen Speichere die Datenbank. Sie werden nicht aktualisiert, wenn Sie dies als Readonly-Datenbank verwenden.