我学习了很快,并提出了下面的简单代码。
class ARandom{
var number: Int = 0
var text: String
}
但是,Xcode显示以下错误:
stored property "text" without initial value prevents synthesized initializers
为什么会这样?什么是合成初始化器?为什么"文字"没有初始值会阻止systhesised初始化?请有人请向我解释一下吗?提前帮忙谢谢!
答案 0 :(得分:29)
你有几个选择。
让text
可选。
var text: String?
给text
一个默认值
var text: String = ""
在text
的初始化程序
ARandom
提供值
init() { text = "" }
发生这种情况的原因是您将text
定义为String
。它不是可选的。从本质上讲,你说它始终是String
而永远不是nil
。
如果您创建了ARandom
的新实例,那么使用当前代码,text
将没有任何价值 - 如果text
不是可选的,那么这是不可能的
Apple的文档可能会更好地解释它
类和结构必须将其所有存储属性设置为 适当的初始值,当该类的实例或 结构已创建。存储的属性不能留在 不确定的状态。
您可以在其中设置存储属性的初始值 初始化程序,或通过指定默认属性值作为一部分 财产的定义。