Swift 避免域中重复对象的正确方法?

Swift 避免域中重复对象的正确方法?,swift,realm,Swift,Realm,假设我们有一个领域对象,它有一个“title”属性作为主键。检查具有相同键(标题)的对象是否存在并相应添加的正确方法是什么?没有任何错误 var personThatExists = Person.objectsWhere("id == %@", primaryKeyValueHere).firstObject() if personThatExists { //don't add } else { //add our object to the DB }

假设我们有一个领域对象,它有一个“title”属性作为主键。检查具有相同键(标题)的对象是否存在并相应添加的正确方法是什么?没有任何错误

var personThatExists = Person.objectsWhere("id == %@", primaryKeyValueHere).firstObject()

  if personThatExists { 
    //don't add 
  } else { 
    //add our object to the DB 
  }
我已经在网站上看到了上述解决方案


我认为应该有更好的方法。

根据您是想用新数据更新现有对象,还是不做任何事情(如果已经存在),您有两种选择

如果已经存在Realm.object,则可以使用
Realm.object(of type:,forPrimaryKey:)

如果要在对象存在时更新对象,如果不存在则添加对象,只需使用
realm.add(:,update:)

let existingPerson = realm.object(ofType: Person.self, forPrimaryKey: primaryKey)

if let existingPerson = existingPerson {
    // Person already exists, act accordingly
} else {
    // Add person
}
do {
    try realm.write {
        realm.add(personObject,update:true)
    }
}