从初始化程序返回而不初始化所有存储的属性swift ios

时间:2018-02-02 12:13:26

标签: ios swift initialization

我正在WidgetData类中初始化SQLite数据库的变量,但我现在遇到错误,

  

从初始化程序返回,而不初始化所有存储的属性

但之前它已成功运行。

我已经关注this但是即使我已经添加了空值仍然会收到错误,有助于解决此问题。

这是我到目前为止所做的:

import Foundation

class WidgetData {

  var id: Int64?
  var name: String
  var entered : String
  var address: String

  var formid : Int64?
  var formname : String
  var formdescription : String
  var formcategory : String

  init(id: Int64) {
      self.id = id
      name = ""
      entered = ""
      address = ""
  }

  init(formid: Int64) {
      self.formid = formid
      formname = ""
      formdescription = ""
      formcategory = ""
  }

  init(id: Int64, name: String, entered: String, address: String) {
      self.id = id
      self.name = name
      self.entered = entered
      self.address = address
  }

  init(formid: Int64, formname : String, formdescription : String, formcategory : String) {
      self.formid = formid
      self.formname = formname
      self.formdescription = formdescription
      self.formcategory = formcategory
   }
}

1 个答案:

答案 0 :(得分:1)

问题是以下属性:

var name: String
var entered : String
var address: String
var formname : String
var formdescription : String
var formcategory : String

不是可选的,因此它们必须是initialized

  

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

     

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

因此您可以为它们分配默认值,因此您的代码可能是:

import Foundation

class WidgetData {
    var id: Int64?
    var name: String = ""
    var entered : String = ""
    var address: String = ""

    var formid : Int64?
    var formname : String = ""
    var formdescription : String = ""
    var formcategory : String = ""

    init(id: Int64) {
        self.id = id
    }

    init(formid: Int64) {
        self.formid = formid
    }

    init(id: Int64, name: String, entered: String, address: String) {
        self.id = id
        self.name = name
        self.entered = entered
        self.address = address
    }

    init(formid: Int64, formname : String, formdescription : String, formcategory : String) {
        self.formid = formid
        self.formname = formname
        self.formdescription = formdescription
        self.formcategory = formcategory
    }
}