我正在为我的模型使用自定义基类,以用于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将开始抱怨我需要实现其他初始化函数。有谁知道我该如何解决第一个问题?
答案 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本身管理。
或者如果createdAt
和updatedAt
在默认情况下是Date()
,则可以通过在类声明中声明var
来完全省略初始化程序。
public class ModelBase: Object {
@objc public dynamic var createdAt: Date = Date()
@objc public dynamic var updatedAt: Date = Date()
}