Search code examples
iosswiftrealmrealm-mobile-platform

Fatal Error :Can't open realm


I am working on IOS. I am using realm database in the frontend. It was working fine until I made some changes to the realm model and all files related to it. I just added one field to these files.

Now I am getting an error "Fatal error: Can't open realm" in the following code

fileprivate func getRealm() -> Realm {
    // get default configuration realm
    do {
        return try Realm()
    } catch {
        Swift.fatalError("Can't open realm")  //Fatal Error :Can't open realm
    }
}

Can anyone tell what might be the possible causes for this error. Thanks in advance.


Solution

  • If you made changes to the realm model, you need to increase your schema version and you may or may need to provide a migration block. See the official documentation for details.

    // Inside your [AppDelegate didFinishLaunchingWithOptions:]
    
    RLMRealmConfiguration *config = [RLMRealmConfiguration defaultConfiguration];
    // Set the new schema version. This must be greater than the previously used
    // version (if you've never set a schema version before, the version is 0).
    config.schemaVersion = 1;
    
    // Set the block which will be called automatically when opening a Realm with a
    // schema version lower than the one set above
    config.migrationBlock = ^(RLMMigration *migration, uint64_t oldSchemaVersion) {
        // We haven’t migrated anything yet, so oldSchemaVersion == 0
        if (oldSchemaVersion < 1) {
            // Nothing to do!
            // Realm will automatically detect new properties and removed properties
            // And will update the schema on disk automatically
        }
    };
    
    // Tell Realm to use this new configuration object for the default Realm
    [RLMRealmConfiguration setDefaultConfiguration:config];
    
    // Now that we've told Realm how to handle the schema change, opening the file
    // will automatically perform the migration
    [RLMRealm defaultRealm];