从初始值设定项返回而不初始化所有存储的属性 swift ios



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

从初始值设定项返回而不初始化所有存储的属性

但以前它运行成功。

我已经遵循了这一点,但即使我添加了它们空值仍然收到错误,帮助解决此问题。

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

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
   }
}

问题是以下属性:

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

不是可选的,因此必须对其进行初始化:

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

可以在初始值设定项中为存储的属性设置初始值,也可以通过将默认属性值作为属性定义的一部分来分配。

因此,

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

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
    }
}

最新更新