Reino: no se puede crear un objeto con el valor de clave principal existente
Tengo un objeto Persona con muchos perros. La aplicación tiene una página separada donde muestra solo perros y otra página donde muestra perros de la persona
Mi modelo es el siguiente
class Person: Object {
dynamic var id = 0
let dogs= List<Dog>()
override static func primaryKey() -> String? {
return "id"
}
}
class Dog: Object {
dynamic var id = 0
dynamic var name = ""
override static func primaryKey() -> String? {
return "id"
}
}
Tengo personas almacenadas en el Reino. La persona tiene una página de detalles donde buscamos y mostramos a sus perros. Si el perro ya existe, actualizo la información más reciente para ese perro y la agrego a la lista de perros de la persona; de lo contrario, creo un nuevo perro, lo guardo y lo agrego a la lista de personas. Esto funciona en coredata.
// Fetch and parse dogs
if let person = realm.objects(Person.self).filter("id =\(personID)").first {
for (_, dict): (String, JSON) in response {
// Create dog using the dict info,my custom init method
if let dog = Dog(dict: dict) {
try! realm.write {
// save it to realm
realm.create(Dog, value:dog, update: true)
// append dog to person
person.dogs.append(dog)
}
}
}
try! realm.write {
// save person
realm.create(Person.self, value: person, update: true)
}
}
Al tratar de actualizar a la persona con sus perros, el reino arroja una excepciónNo se puede crear un objeto con el valor de clave principal existente