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

Respuestas a la pregunta(1)

Su respuesta a la pregunta