gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 06:04:43 27 4
gpt4 key购买 nike

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

Return from initializer without initializing all stored properties

但之前它运行成功。

我关注了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
}
}

最佳答案

问题在于以下属性:

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

不是可选的,所以它们必须是 initialized :

Classes and structures must set all of their stored properties to an appropriate initial value by the time an instance of that class or structure is created. Stored properties cannot be left in an indeterminate state.

You can set an initial value for a stored property within an initializer, or by assigning a default property value as part of the property’s definition.

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

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

关于ios - 从初始化程序返回而不初始化所有存储的属性swift ios,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48582440/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com