我正在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
}
}
答案 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
}
}