Я собираюсь реализовать обратные вызовы для некоторых объектов в моем коде. Пока что у меня есть следующий объект:

class Contact: Object {
    @objc dynamic var uid: String? = nil
    @objc dynamic var fullName: String? = nil
    @objc dynamic var givenName: String? = nil
    @objc dynamic var familyName: String? = nil
}

В идеале я хотел бы заполнить fullName один раз givenName и familyName иметь значение.

Я заметил, что в Realm есть события, но они кажутся довольно обширными, и я не уверен, что реализация такого механизма не вызовет больше проблем в моем приложении, поскольку мне нужно запускать его только при манипулировании объектом Contact.

Есть какие-нибудь предложения или лучшие практики, которыми можно поделиться?

0
Stephane Paquet 13 Фев 2018 в 23:45

1 ответ

Лучший ответ

То, что вы ищете, - это вычисляемые свойства. Однако Realm в настоящее время не поддерживает сохранение вычисленных свойств, но вам действительно не нужно сохранять fullName в Realm, поскольку, пока сохраняются givenName и familyName, вы всегда можете вычислить fullName.

class Contact: Object {
    @objc dynamic var uid: String? = nil
    @objc dynamic var givenName: String? = nil
    @objc dynamic var familyName: String? = nil
    var fullName: String? {
        if let givenName = givenName, let familyName = familyName {
            return "\(givenName) \(familyName)"
        }
        return nil
    }
}
0
Dávid Pásztor 15 Фев 2018 в 17:00