我正在快速学习,并提出了下面的简单代码.
class ARandom{
var number: Int = 0
var text: String
}
Run Code Online (Sandbox Code Playgroud)
但是,Xcode显示以下错误:
stored property "text" without initial value prevents synthesized initializers
Run Code Online (Sandbox Code Playgroud)
为什么会这样?什么是合成初始化器?为什么没有初始值的"text"会阻止systhesised initialiser?请有人请向我解释一下吗?提前谢谢任何帮助!
Jam*_*ini 33
你有几个选择.
使text可选.
var text: String?
给text一个默认值
var text: String = ""
text在ARandom初始化程序中给出一个值
init() { text = "" }
发生这种情况的原因是你定义text为String.它不是可选的.从本质上讲,你说它始终是一个String永远不会nil.
使用当前代码,如果您创建了一个新实例ARandom,text则没有任何价值 - 如果text不是可选的,那么这是不可能的
Apple的文档可能会更好地解释它
在创建该类或结构的实例时,类和结构必须将其所有存储的属性设置为适当的初始值.存储的属性不能保留在不确定的状态.
您可以在初始化程序中为存储的属性设置初始值,也可以通过将默认属性值指定为属性定义的一部分来设置初始值.
| 归档时间: |
|
| 查看次数: |
9284 次 |
| 最近记录: |