gpt4 book ai didi

ios - DataController Init 中无法在属性初始值设定项中使用实例成员错误

转载 作者:行者123 更新时间:2023-11-30 11:43:24 25 4
gpt4 key购买 nike

我有一个数据 Controller ,应该接收数据,然后将其放入 UITableViewDataSource 中。但是我似乎无法访问 init 中的变量。

如果我取消注释 init 内的 var 部分声明,则会收到错误“DataController1 类型的值没有成员部分”

有人可以告诉我我错过了什么吗?

相关代码行如下:

class DataController1: NSObject, DataController {

struct Section {
let type: SectionTypeEnum
let rows: [Any]
}

let contactData: ContactData
var section1: [Section1]!
var section2: [Section2]!
var section3: [Section3]!
// var sections = [Section]!


init(contactData: ContactData) {
self.contactData = contactData

self.section1 = self.contactData.list1
self.section2 = self.contactData.list2
self.section3 = self.contactData.list3

// var sections: [Section] = [
// Section(type: .section1, rows: section1),
// Section(type: .section2, rows: section2),
// Section(type: .section3, rows: section3),
//]

}



var sections: [Section] = [

Section(type: .section1, rows: section1),
//Cannot use instance member 'section1' within property initializer; property initializers run before 'self' is available
// current error
Section(type: .section2, rows: section2),
Section(type: .section3, rows: section3),
]
}

最佳答案

正如评论中所述发生错误是因为您无法声明初始值相互依赖的属性

我建议仅支持 init(contactData 方法。

切勿将属性声明为隐式解包可选属性,这些属性在 init 方法中使用非可选值进行初始化。如果它们应该是可选的,请将它们声明为常规可选 (?)

class DataController1: NSObject, DataController {

struct Section {
let type: SectionTypeEnum
let rows: [Any]
}

let contactData: ContactData
var section1: [Section1]
var section2: [Section2]
var section3: [Section3]
var sections: [Section]


init(contactData: ContactData) {
self.contactData = contactData

section1 = self.contactData.list1
section2 = self.contactData.list2
section3 = self.contactData.list3
sections = [Section(type: .section1, rows: section1),
Section(type: .section2, rows: section2),
Section(type: .section3, rows: section3)]
}
}

关于ios - DataController Init 中无法在属性初始值设定项中使用实例成员错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49088661/

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