避免向领域添加重复对象
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 将创建一个新对象,否则它将使用您传入的对象的值更新存在的对象。
希望对您有所帮助
我从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 将创建一个新对象,否则它将使用您传入的对象的值更新存在的对象。
希望对您有所帮助