Adding new Object to existing List in Realm

Write something like this:

if let person = persons?[0] {
    person.dogs.append(newDog)
}

try! realm.write {
    realm.add(person, update: true)
}

Please check how are you getting realm. Each time you call defaultRealm, you are getting new realm.


The persons property is of type Results<Person>, which is a collection containing Person objects that are managed by a Realm. In order to modify a property of a managed object, such as appending a new element to a list property, you need to be within a write transaction.

try! realm.write {
    persons[0].dogs.append(newDog)
}

Side Note: Besides adding the code inside the write transaction which solves your issue, you could query Person by name as follow...

@IBAction func addDog(){
    let newDog = Dogs()
    newDog.name = "Rex"
    newDog.age = "2"

    let personName = realm.objects(Person.self).filter("name = 'Tomas'").first!

    try! realm.write {
        personName.dogs.append(newDog)
    }
}