【发布时间】:2014-10-21 13:00:58
【问题描述】:
似乎大多数出现此错误的人都在尝试创建空字符串。我只有三个属性
dynamic var babyEvent: Int
dynamic var eventDate: NSDate
dynamic var timeSpent: Int
在init()中初始化为
override init()
{
self.babyEvent = BabyWet
self.eventDate = NSDate()
self.timeSpent = 5
super.init()
}
但是当 super.init() 被调用时,我得到了 不支持将“(null)”作为 RLMObject 属性。
有两个 Ints 和一个 NSDate,它们都是有效的 Realm 属性类型。那么为什么会出现这个错误呢?
【问题讨论】:
-
在大多数 OO 语言中,超级调用通常应该总是首先被调用。 super.init() 是否需要任何数据?
-
我也是这么认为的,但是首先调用 super.init() 会导致编译时错误。 “属性”在 super.init() 调用时未初始化。
-
@user3427079 Swift 不同,在所有本地属性都初始化之前,您不能调用初始化程序,因此在本地属性设置好值后调用 super。
-
也许超级需要一些东西来初始化?像 super.init(expectedData)。难道没有API可以检查是否有默认构造函数吗?
-
谢谢风衣。这东西看起来很酷。
标签: swift properties realm