Это потому, что вы обновляете Person
новыми данными. Строка let person = Person()
создает новый экземпляр со всеми значениями по умолчанию. (firstName: String = ""
et c ..)
Итак, когда вы присваиваете myContactID
и personId
этому вновь созданному person
, оно будет выглядеть так:
Person {
personId = FAE4C224-D37E-4C77-B6F1-C60A92F188D0;
firstName = ;
surname = ;
mobileNumber = ;
password = ;
myContactID = contactIdentifier;
}
И когда вы вызываете realm.add(person, update: .modified)
, он перезапишет запись, связанную с первичным ключом, с этим вновь созданным person
.
Вы хотите извлечь существующий person
и изменить его. Вы можете сделать что-то вроде этого:
guard let me = realm.objects(Person.self).filter("mobileNumber == %@", mobileNumber).first else { return }
try! realm.write {
me.myContactID = contact.identifier
}