Swift 正在更新主键不起作用的对象

Swift 正在更新主键不起作用的对象,swift,realm,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_entr

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

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)
    }
}
}

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

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)
    }
}
执行代码时出错。

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)
    }
}
致命错误:“尝试!”表达式意外引发错误:错误域=io.realm Code=10“由于以下错误,需要进行迁移: -属性“username”已成为主键。“UserInfo={NSLocalizedDescription=由于以下错误,需要迁移: -属性“username”已成为主键,错误代码=10}:file/Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-703.0.18.8/src/swift/stdlib/public/core/ErrorType.swift,第54行


是的,当您更改模型时,您需要添加迁移指令,这就是错误消息所描述的

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

  }
})
let config=Realm.Configuration(schemaVersion:1,migrationBlock:{migration,oldSchemaVersion in
如果oldschemaversation<1{
}
})
代码中的1表示当前版本,每次对代码进行任何更改时,都需要增加版本号并对想要更改的数据进行任何更改


您可以阅读更多关于它的信息

您好!请在帖子中以文本形式插入代码,而不是截图形式!我们会尽力去看的。非常感谢。是否在保存对象后运行代码,然后更改数据模型或添加主键?请尝试重置模拟器设置,以便它删除任何以前领域数据库的所有跟踪,然后再次运行。尝试了所有可能的方法我知道我在定义模型、运行项目时抛出了确切的错误,然后返回并将模型中的一个属性设置为主键。唯一修复它的方法是重置我运行代码的每个设备上的所有sim设置,并从我使用过的任何硬设备上删除应用程序。然后一切都很好,但您可以尝试实际迁移@Haligen,谢谢我删除了核心模拟器中的每个领域文件,它可以正常工作