如何强制包含计算属性?

时间:2017-10-08 16:12:22

标签: swift realm

如何告诉领域我想要它来计算和存储只读属性?假设我有以下模型:

class User: Object {
    @objc dynamic var fullName: String {
        return "\(name) \(surname)"
    }
    @objc dynamic var name = ""
    @objc dynamic var surname = ""
}

我想在写作上形成全名。是否可以不使用虚拟设置器的解决方法?

1 个答案:

答案 0 :(得分:1)

只读属性会被自动忽略,因为将它们存储在数据库中是完全没有意义的。如果确实需要将其存储在数据库中,则可以为User类创建更新函数,并使用它将实体保存到数据库。

这样的事情:     

class User: Object {
    @objc dynamic var fullName = ""
    @objc dynamic var name = ""
    @objc dynamic var surname = ""

    static func create(name: String, surname: String, in realm: Realm) {
        let user = realm.create(User.self)
        user.name = name
        user.surname = surname
        user.fullName = "\(name) \(surname)"
}

然后你就像这样创建你的实体:

...
let realm = try! Realm()
try! realm.write {
    User.create(name: name, surname: surname, in: realm)
}