Fatal Error :Can't open realm

Fatal Error :Can't open realm

我正在研究 IOS。我在前端使用 realm 数据库。它工作正常,直到我对领域模型和所有相关文件进行了一些更改。我只是在这些文件中添加了一个字段。

现在我在下面的代码中得到一个错误"Fatal error: Can't open realm"

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
    }
}

任何人都可以告诉这个错误的可能原因是什么。 提前致谢。

如果您对领域模型进行了更改,则需要增加架构版本,并且您可能需要提供迁移块。 See 官方文档了解详情。

// 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];

以上问题是由于Realm数据库不一致造成的。我通过添加一个字段来更改模型的结构。因此,该模型有 10 个字段,但我的应用程序中的领域数据库有 9 个字段,因为该应用程序是在更改之前构建的。

我通过重新安装在 phone 中重新生成领域数据库的应用程序解决了这个问题,从而拥有一致的模型和数据库。

如果您的应用尚未上线,上述解决方法可能会很好。但是,如果您的应用已被其他用户使用,那么他们将不得不在更新时重新安装应用,这可能会导致用户体验不佳。

理想情况下,您应该为新更改编写一个迁移块。 希望大家清楚。