更新主键不起作用的对象

时间:2016-06-21 12:53:27

标签: swift realm

这是我使用主键用户名创建的对象以及尝试运行添加对象代码时的错误。

class Login_item: Object {
dynamic var username = String()
dynamic var password = String()

override static func primaryKey() -> String? {
    return "username"
}

}

这是添加新对象和更新对象的代码。

func save_login_info() {
    let new_login_entry = Login_item()

    new_login_entry.username = Username.text!
    new_login_entry.password = Password.text!

    let realm = try! Realm()
    try! realm.write {
        realm.add(new_login_entry)
        print("Login info save as: \(Realm.Configuration.defaultConfiguration.fileURL!)")
    }

    try! realm.write {
        realm.add(new_login_entry, update: true)
    }
}

执行代码时遇到的错误。

  

致命错误:'试试!'表达式意外地引发了错误:Error Domain = io.realm Code = 10“由于以下错误,需要迁移:    - 属性'用户名'已成为主键。“UserInfo = {NSLocalizedDescription =由于以下错误需要迁移:    - 属性'用户名'已成为主键。,错误代码= 10}:file /Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-703.0.18.8/src/swift/stdlib/public/core /ErrorType.swift,第54行

1 个答案:

答案 0 :(得分:0)

是的,你需要在更改模型时添加迁移指令,这就是错误消息所描述的内容。

let config = Realm.Configuration(schemaVersion: 1, migrationBlock: { migration, oldSchemaVersion in
  if oldSchemaVersion < 1 {

  }
})

代码中的1表示当前版本,每次对代码进行任何更改时,都需要增加版本号并对所需数据进行任何更改。

您可以阅读更多相关信息here