在Realm中是否真的需要便捷初始化程序?

时间:2020-04-22 08:39:27

标签: ios swift realm

在阅读快速的Realm文档时,我偶然发现了this passage

对象子类的自定义初始化程序:创建模型时 对象子类,您有时可能想添加自己的自定义 初始化方法以提供更多便利。

由于Swift自省的一些当前限制,这些 方法不能指定为该类的初始化程序。相反,他们 需要使用Swift关键字标记为便捷初始化程序 同名

但是此代码可以完美地工作(缩写)

@objcMembers
class UserDatabaseEntity: Object {

    dynamic var height: Int = 0
    dynamic var userId: String = ""

    override public class func primaryKey() -> String? {
        return "userId"
    }

    init(user: UserEntityProtocol, userId: String) {
        super.init()
        self.height = user.height
        self.userId = userId
    }

    required init() {}
}

即使Realm指定了它自己的初始化程序并覆盖了所需的空init,它仍可以正确地保存和检索该模型。能够对Realm的基础实现有更深入的了解和知识的人可以解释为什么上面的代码起作用吗?

文档是否不是最新的,使用您自己指定的初始化程序的任何问题现在都消失了?还是这里有其他方法可以使它起作用?

0 个答案:

没有答案