难以在 swift 中为表视图附加数组
Difficulty appending array of arrays in swift for tableview
我正在尝试根据我拥有的一些数据构建一个表格视图,但我遇到了一些
附加我不理解的行为。
为了调试,我正在尝试这个,如果我说:
var sectionHeaders:[String] = ["0","1"]
var items:[[String]] = [["zero","zero","zero"],["one","one","one"]]
并在我的表格视图中显示它,我看到一个 header“0”,其中三行为零,另一个 header“1”
三排“一”。这是可以预料的。
但是,如果我尝试使用追加构建相同的结构,我会得到奇怪的结果:
var sectionHeaders:[String] = []
var items:[[String]] = [[]]
var tempItems:[String] = []
sectionHeaders.append("0")
tempItems.append("zero")
tempItems.append("zero")
tempItems.append("zero")
items.append(tempItems)
tempItems = []
sectionHeaders.append("1")
tempItems.append("one")
tempItems.append("one")
tempItems.append("one")
items.append(tempItems)
有了这个,我得到了一个 header 的“0”部分,其中包含零行(无行),以及一个 header 的“1”部分,其中包含三行零。
数据好像有点偏移
我追加的方式有问题吗?
我的数据源委托非常简单:
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return sectionHeaders[section]
}
override func numberOfSections(in tableView: UITableView) -> Int {
return sectionHeaders.count
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return items[section].count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "testCell", for: indexPath)
let text = items[indexPath.section][indexPath.row]
cell.textLabel?.text = text
return cell
}
}
当你这样做时:
var items:[[String]] = [[]]
您将 items
定义为具有一个元素的数组(外括号组),该元素是一个空数组:[]
(内括号组)。
为了不获取偏移量,应该是这样的:
var items:[[String]] = []
(只是一个空数组)
我正在尝试根据我拥有的一些数据构建一个表格视图,但我遇到了一些 附加我不理解的行为。
为了调试,我正在尝试这个,如果我说:
var sectionHeaders:[String] = ["0","1"]
var items:[[String]] = [["zero","zero","zero"],["one","one","one"]]
并在我的表格视图中显示它,我看到一个 header“0”,其中三行为零,另一个 header“1” 三排“一”。这是可以预料的。 但是,如果我尝试使用追加构建相同的结构,我会得到奇怪的结果:
var sectionHeaders:[String] = []
var items:[[String]] = [[]]
var tempItems:[String] = []
sectionHeaders.append("0")
tempItems.append("zero")
tempItems.append("zero")
tempItems.append("zero")
items.append(tempItems)
tempItems = []
sectionHeaders.append("1")
tempItems.append("one")
tempItems.append("one")
tempItems.append("one")
items.append(tempItems)
有了这个,我得到了一个 header 的“0”部分,其中包含零行(无行),以及一个 header 的“1”部分,其中包含三行零。
数据好像有点偏移
我追加的方式有问题吗?
我的数据源委托非常简单:
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return sectionHeaders[section]
}
override func numberOfSections(in tableView: UITableView) -> Int {
return sectionHeaders.count
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return items[section].count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "testCell", for: indexPath)
let text = items[indexPath.section][indexPath.row]
cell.textLabel?.text = text
return cell
}
}
当你这样做时:
var items:[[String]] = [[]]
您将 items
定义为具有一个元素的数组(外括号组),该元素是一个空数组:[]
(内括号组)。
为了不获取偏移量,应该是这样的:
var items:[[String]] = []
(只是一个空数组)