领域模型没有初始化程序

时间:2018-08-18 21:32:46

标签: swift realm

我正在为我的模型使用自定义基类,以用于Realm for Swift。这是课程。

import RealmSwift

public class ModelBase: Object {
    @objc public var createdAt, updatedAt: Date

    required convenience init() {
        createdAt = Date()
        updatedAt = Date()

        self.init()
    }
}

现在,当尝试编译它时,Xcode将引发错误

  

'ModelBase'类没有初始化程序

但是,当我将初始化函数更改为required public init()然后让它调用super.init()时,Realm将开始抱怨我需要实现其他初始化函数。有谁知道我该如何解决第一个问题?

1 个答案:

答案 0 :(得分:2)

您需要使用带有声明的init参数的自定义初始化程序,如下所示:

import RealmSwift

public class ModelBase: Object {
    @objc public dynamic var createdAt, updatedAt: Date

    convenience init(_ defaultDate: Date = Date()) {
        self.init()

        createdAt = defaultDate
        updatedAt = defaultDate
    }
}
在初始化所有其他属性之前,必须先调用convenience init self.init()中的

。另外,您还需要将属性声明为dynamic,因为它们的获取器和设置器由Realm本身管理。

或者如果createdAtupdatedAt在默认情况下是Date(),则可以通过在类声明中声明var来完全省略初始化程序。

public class ModelBase: Object {
    @objc public dynamic var createdAt: Date = Date()
    @objc public dynamic var updatedAt: Date = Date()
}