我从Parse.com查询数据并将其保存在本地Realm数据库(iOS / swift)中。每个对象都有一个唯一的属性(A),但也有一个可能相同的属性(B)。避免将具有相同属性B的对象添加到领域数据库中的最有效方法是什么? 提前谢谢。
答案 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方法。如果一个对象不存在,它将创建一个新对象,否则它将使用您传入的对象中的值更新存在的对象。
希望这有帮助