代码之家  ›  专栏  ›  技术社区  ›  iOS Developer

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

  •  1
  • iOS Developer  · 技术社区  · 8 年前

    我正在初始化SQLite数据库的变量 WidgetData 但我现在有个错误,

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

    但之前它运行成功。

    我跟踪了 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 回复  |  直到 8 年前
        1
  •  1
  •   Community Mohan Dere    6 年前

    问题在于以下属性:

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