Realm Integer崩溃项目

时间:2019-02-09 13:55:18

标签: ios swift realm

我正在尝试向我的应用程序添加整数值,但是该应用程序崩溃了。

这是Object类:

import Foundation
import RealmSwift

class Workout: Object {

    @objc dynamic var date: Date?
    @objc dynamic var exersice: String?
    @objc dynamic var sets = 0
    @objc dynamic var reps = 0
    @objc dynamic var kg = 0
    @objc dynamic var notes: String?

}

这就是我写的方式

    let currenDate = Date()

    let realm = try! Realm()

    var myWorkout = Workout()
    myWorkout.date = currenDate
    myWorkout.exersice = "Squat"
    myWorkout.sets = 3
    myWorkout.reps = 6
    myWorkout.kg = 70
    myWorkout.notes = "test note"

    try! realm.write {
        realm.add(myWorkout)
    }

有什么想法吗?我遵循了确切的文档:https://realm.io/docs/swift/latest#getting-started

编辑:这是我运行项目时发生的情况: Image here

如果我按左侧的10 ViewController.viewDidLoad(),将显示以下内容:Image here

3 个答案:

答案 0 :(得分:1)

为了未来:尝试!表示“我百分百肯定不会有例外,如果有例外,请崩溃”。然后您的代码做了。最好使用try / catch,以便您可以看到抛出了哪个异常。尝试非常罕见!是正确的。

答案 1 :(得分:0)

您已经更改了锻炼模型,这就是为什么领域引发迁移是必需的错误。

尝试删除您的应用,然后从设备/模拟器重新安装,或者了解如何在领域中进行迁移。

答案 2 :(得分:0)

迁移错误。

大多数这些只需我更新 schemaVersion 即可解决。

领域将了解您的模式已更改,并为您解决基本问题。

如果模式更改更为复杂并且必须支持向后兼容,则必须向领域说明如何迁移。

一种简单的方法是使用您自己的getRealm,而不是默认的共享实例:

func getRealm() -> Realm {
  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: 2, // This is the number you should update!

      // 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 < 1) {
              // Nothing to do!
              // Realm will automatically detect new properties and removed properties
              // And will update the schema on disk automatically
          }
  })

  do {
      return try Realm.init(configuration: config)
  } catch {
      return try! Realm.init(configuration: config)
  }
}

易于迁移的说明: https://medium.com/@shenghuawu/realm-lightweight-migration-4559b9920487