代码之家  ›  专栏  ›  技术社区  ›  SeaWarrior404

如果架构版本84小于上次设置的版本86,则Realm DB for iOS引发架构不匹配错误

  •  0
  • SeaWarrior404  · 技术社区  · 7 年前

    我最近对我的项目做了一次pod更新,从那以后我就面临着领域的问题。 代码如下:,

        MyNetworkManager.sharedNetworkManager.performNetworkOperation(url: MyEndpoint().homepage(), httpmethod: .get, parameters: requestDict) { response in
            let realm = try! Realm()
            try! realm.write {
                let JSON = response.result.value as AnyObject
                realm.create(HomePageData.self, value: JSON, update: true)
            }
    

    显示的错误如下:,

        Thread 1: Fatal error: 'try!' expression unexpectedly raised an error: 
        Error Domain=io.realm Code=1 "Provided schema version 84 is less than last set 
        version 86." UserInfo={NSLocalizedDescription=Provided schema version 84 is 
        less than last set version 86., Error Code=1}
    

    我阅读了关于同一问题的其他答案,但没有找到任何类似的答案。一般来说,我是新手,请告诉我解决这个问题的最佳方法是什么。

    项目详细信息:

    1. 语言-Swift 3和目标C部分
    2. 用于DB的Swift领域
    3. Xcode版本-9.2
    1 回复  |  直到 7 年前
        1
  •  2
  •   a.masri    7 年前

    您正在新版本上安装应用程序旧版本(降级)

    这就是导致此问题的原因,请尝试迁移数据库

     var config = Realm.Configuration(
                    // 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).
                    schemaVersion: 87,
    
                    // Set the block which will be called automatically when opening a Realm with
                    // a schema version lower than the one set above
                    migrationBlock: { migration, oldSchemaVersion in
                        // We haven’t migrated anything yet, so oldSchemaVersion == 0
                        if (oldSchemaVersion < 86) {
                            // 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
                Realm.Configuration.defaultConfiguration = config
    
    推荐文章