Правильный способ избежать дублирования объекта в Царстве? - PullRequest
0 голосов
/ 27 января 2019

Допустим, у нас есть объект Realm, имеющий свойство title в качестве первичного ключа.Как правильно проверить существование объекта с тем же ключом (заголовком) и добавить соответственно?Без каких-либо ошибок.

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 голосов
/ 28 января 2019

В зависимости от того, хотите ли вы обновить существующий объект новыми данными или ничего не делать, если он уже существует, у вас есть две альтернативы.

Если вы хотите ничего не делать, если он уже существует, вы можете использовать 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:).

do {
    try realm.write {
        realm.add(personObject,update:true)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...