领域迁移失败并出现错误:需要迁移,或者已使用不同的架构版本

时间:2016-02-25 18:11:22

标签: ios swift realm

这是迁移的代码(在didFinishLaunchingWithOptions中){

    Realm.Configuration.defaultConfiguration = Realm.Configuration(
        schemaVersion: 3,
        migrationBlock: { migration, oldSchemaVersion in
            // The enumerateObjects:block: method iterates
            // over every 'Person' object stored in the Realm file
            migration.enumerate(User.className()) { oldObject, newObject in

                if oldSchemaVersion < 1 {
                    newObject!["crashTest"] = ""
                }
                if oldSchemaVersion < 2 {

                }
            }
    }) let realm = try!Realm()

这是错误:

  

致命错误:'试试!'表达式意外地引发了错误:错误   Domain = io.realm Code = 0“由于以下原因,需要迁移   错误:    - 属性'crashTest'已被添加到最新的对象模型。“UserInfo = {NSLocalizedDescription =由于需要迁移   以下错误:    - 属性'crashTest'已被添加到最新的对象模型。}:file /Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-700.1.101.15/src/swift/stdlib/public/core/ErrorType.swift ,   第50行

1 个答案:

答案 0 :(得分:0)

如果您仅在本地开发中,我建议您重置您的领域数据库,而不是进行迁移。您可以通过删除模拟器或设备上的应用程序来重置数据库。或者,您可以尝试在访问数据库之前使用NSFileManager删除领域文件。   import groovy.swing.SwingBuilder import java.awt.BorderLayout as BL count = 0 new SwingBuilder().edt { frame(title: 'Frame', size: [300, 300], show: true) { desktopPane() { internalFrame() { borderLayout() textlabel = label(text: 'Click the button!', constraints: BL.NORTH) button(text:'Click Me', actionPerformed: {count++; textlabel.text = "Clicked ${count} time(s)."; println "clicked"}, constraints:BL.SOUTH) } } } }