避免在Realm中重复对象的正确方法?

时间:2019-01-27 17:00:55

标签: swift realm

让我们说我们有一个具有“ title”属性作为主键的Realm对象。检查具有相同键(标题)的对象是否存在并进行相应添加的正确方法是什么?没有任何错误。

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

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

我在https://stackoverflow.com/a/28771121/1919764看到了以上解决方案

我相信应该有更好的方法。

1 个答案:

答案 0 :(得分:1)

根据是要使用新数据更新现有对象,还是要不执行任何操作(如果已有的话),有两种选择。

如果您想不做任何事情,可以使用WITH A AS ( SELECT ID ,Seller_type ,SUM(view_count) as Total_views ,Week FROM Table_A GROUP BY ID ,Seller_type ,Week ) SELECT CASE WHEN Week = 'Week1' THEN MAX(Total_views) CASE WHEN Week = 'Week2' THEN FROM A

Realm.object(ofType:,forPrimaryKey:)

如果要更新该对象(如果存在)并添加它(如果不存在),则只需使用let existingPerson = realm.object(ofType: Person.self, forPrimaryKey: primaryKey) if let existingPerson = existingPerson { // Person already exists, act accordingly } else { // Add person }

realm.add(_:,update:)