避免向领域添加重复对象

Avoid Adding Repeat Object to Realm

我从Parse.com中查询下来数据,保存在本地Realm数据库中(iOS/swift)。每个对象都有一个唯一的 属性(A),但也有一个可能相同的 属性(B)。避免将具有相同 属性 B 的对象添加到领域数据库中的最有效方法是什么? 提前致谢。

你可以给一个对象设置主键,Realm保证每个对象在数据库中只有一个。

class Person: RLMObject {
    dynamic var id = 0
    dynamic var name = ""

    override class func primaryKey() -> String {
        return "id"
    }
}

您仍然需要自己检查该对象是否已经在数据库中。它会根据主键获取对象(通过 属性(A) 或 属性(B) 查找对象)。然后如果对象存在就不添加,不存在就添加到DB中。

像这样:

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

  if personThatExists { 
    //don't add 
  } else { 
    //add our object to the DB 
  }

如果您使用主键并且不关心正在更新的对象的值,则可以使用createOrUpdate 方法。如果一个对象不存在,Realm 将创建一个新对象,否则它将使用您传入的对象的值更新存在的对象。

希望对您有所帮助