避免向Realm添加重复对象

时间:2015-02-27 03:43:08

标签: ios swift parse-platform realm

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

1 个答案:

答案 0 :(得分:14)

您可以在对象上设置主键,以便Realm保证数据库中只有一个对象。

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

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

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

这样的事情:

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

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

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

希望这有帮助