Assertion failure in CBL-1.1.0 for iOS when trying to open database

I just tried upgrading my projects to CBL 1.1.0 for iOS and OS X. The upgrade proceeded as expected for OS X, and the new framework upgraded the existing database, and all is well. Over on the iOS side, it fails as soon as it tries to open a database with the following error messages:

10:44:26.742| WARNING: Upgrade skipped: Database upgrading class is not present.
2015-06-26 10:44:26.742 pH Air[1126:66587] *** ASSERTION FAILED: CBLManager.storageType is 'SQLite' but no CBL_SQLiteStorage class found
2015-06-26 10:44:26.743 pH Air[1126:66587] *** Assertion failure in -[CBLDatabase(Internal) open:](), /Users/jenkins/jenkins/workspace/couchbase-lite-ios-builds/couchbase-lite-ios/Source/CBLDatabase+Internal.m:171

Details: iOS 8.3 simulator, Xcode 6.3.2, Framework couchbase-lite-ios-community_1.1.0-31

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    NSError* error = nil;
    CBLManager* sharedManager = [CBLManager sharedInstance];
    if ([sharedManager databaseExistsNamed: kSMMDatabaseName]) {
        self.smmDatabase = [sharedManager existingDatabaseNamed: kSMMDatabaseName error: &error];
    } ...

If there is an existing database, it fails at line 5.
Is this related to the new “pluggable” architecture? If so, where is the documentation for getting the plugs right?

Mark Tracy

That shouldn’t be happening; it looks like the storage code got stripped from the binary. Did you download the binary releases, or build your own from source? If the latter, which target did you build?

This was the downloaded package from
I unzipped the archive and dragged the framework into the project folder, and made sure the framework search path is OK.

Make sure you’ve got the -ObjC flag added to your target’s Other Linker Flags build setting. Not having this can cause classes to get wrongly dead-stripped sometimes.

That was it. Somehow that flag got reset when I was switching frameworks.