避免向Realm添加重复对象

Zhe*_*hou 11 realm ios parse-platform swift

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

yos*_*osh 14

您可以在对象上设置主键,以便Realm保证DB中每个对象只有一个.

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

    override class func primaryKey() -> String {
        return "id"
    }
}
Run Code Online (Sandbox Code Playgroud)

您仍然需要自己检查该对象是否已在DB中.它将基于主键获取对象(通过属性(A)或属性(B)查找对象).然后,如果对象存在,请不要添加,如果它不存在,则将其添加到DB.

像这样的东西:

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

  if personThatExists { 
    //don't add 
  } else { 
    //add our object to the DB 
  }
Run Code Online (Sandbox Code Playgroud)

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

希望这可以帮助