存储的财产" text"没有初始值会阻止合成初始化程序

时间:2016-03-14 23:48:58

标签: swift initialization

我学习了很快,并提出了下面的简单代码。

class ARandom{
    var number: Int = 0
    var text: String
}

但是,Xcode显示以下错误:

stored property "text" without initial value prevents synthesized initializers

为什么会这样?什么是合成初始化器?为什么"文字"没有初始值会阻止systhesised初始化?请有人请向我解释一下吗?提前帮忙谢谢!

1 个答案:

答案 0 :(得分:29)

你有几个选择。

  1. text可选。

    var text: String?

  2. text一个默认值

    var text: String = ""

  3. text的初始化程序

    中为ARandom提供值

    init() { text = "" }

  4. 发生这种情况的原因是您将text定义为String。它不是可选的。从本质上讲,你说它始终是String而永远不是nil

    如果您创建了ARandom的新实例,那么使用当前代码,text将没有任何价值 - 如果text不是可选的,那么这是不可能的

    Apple的文档可能会更好地解释它

      

    类和结构必须将其所有存储属性设置为   适当的初始值,当该类的实例或   结构已创建。存储的属性不能留在   不确定的状态。

         

    您可以在其中设置存储属性的初始值   初始化程序,或通过指定默认属性值作为一部分   财产的定义。