我有2个coredata数组。一个有3个元素,另一个也有3个元素。现在我想在我的tableview中加载这些数组。所以我的tableview中总共有6行。
我这样做了......
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let totalCount = (customerDetails.count) + (customerDetails2.count)
return totalCount
}
我尝试在cellForRowAt...
let customers = customerDetails[indexPath.row] //CRASHES HERE
for i in 0..<(customerDetails.count) {
cell.nameLabel.text = customers.fname
if i == customerDetails.count {
break
}
}
let customers2 = customerDetails2[indexPath.row]
for i in 0..<(customerDetails2.count) {
cell.nameLabel.text = customers2.fname
if i == customerDetails2.count {
break
}
}
但它在提到Index out of range
的行中崩溃可能是因为customerDetails
只有3行,而加载的总单元格数为6。
在这种情况下可以做些什么..?
答案 0 :(得分:1)
将cellforRow中的代码更改为此,请注意
let arr1Count = customerDetails.count
if(indexPath.row < = arr1Count )
{
let customers = customerDetails[indexPath.row]
cell.nameLabel.text = customers.fname
}
else
{
let customers = customerDetails2[indexPath.row - arr1Count]
cell.nameLabel.text = customers.fname
}
答案 1 :(得分:1)
if indexPath.row < customerDetails.count
{
// load from customerDetails array
let customer = customerDetails[indexPath.row]
}
else
{
// load from customerDetails2 array
let customer = customerDetails2[indexPath.row - customerDetails.count]
}
答案 2 :(得分:1)
不是仅使用一个部分创建它,而是可以将两者分成两部分:
let sections = [customerDetails,customerDetails2]
并且在numberOfSections中,您可以提供计数:
func numberOfSections(in tableView: UITableView) -> Int {
return sections.count
}
之后,在numberOfItemsInSection中,您可以根据节号提供相应的数组:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return sections[section].count
}
完成此操作后,您可以轻松访问将您的数据提供给cellForRow,如下所示:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let customer = sections[indexPath.section][indexPath.row]
cell.nameLabel.text = customer.name
}
希望它有所帮助!!