我正在尝试向我的应用程序添加整数值,但是该应用程序崩溃了。
这是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
答案 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