在加载表视图数据时,在展开Optional值时意外发现nil

时间:2018-05-08 10:02:02

标签: ios swift xcode

我有一个按钮和表视图,当我点击按钮时,将显示表视图并重新加载其数据,如下所示:

   @IBAction func citybtn(_ sender: Any) {
    if citydrop.isHidden == false{
        citydrop.isHidden = true
    }else {
        let filtered_shifts = myShifts.filter{$0.regionName == regionbtn.titleLabel?.text}
        for shift in filtered_shifts {
            cities.append(shift.cityName)
            citiesid.append(shift.idCity)
        }
        uniqueCity = Array(Set(cities))
        uniqueCityid = Array(Set(citiesid))
        print(uniqueCity)

        citydrop.isHidden = !citydrop.isHidden
        contdurdrop.isHidden=true
        nationalitydrop.isHidden=true
        regiondrop.isHidden=true

        btn=2
        citydrop.isHidden=false

        item = uniqueCity
        citydrop.reloadData()
    }

}

当我点击城市按钮时,它将始终崩溃并显示此错误:

enter image description here

同时注意到我在uniqueCity中有值......

  

[ “达曼”]

我正在用另一个按钮做同样的事情,它的工作正常!

那么为什么会出现此错误的原因是什么?

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    var cell = DropDownViewCell()

    if (tableView == self.regiondrop){
        cell = regiondrop.dequeueReusableCell(withIdentifier: "dropdowncell") as! DropDownViewCell
        cell.item.text=item[indexPath.row]
        return cell

    }else if (tableView == self.citydrop){
        cell = citydrop.dequeueReusableCell(withIdentifier: "dropdowncell1") as! DropDownViewCell
        cell.item.text=item[indexPath.row]
        return cell

    }else if (tableView == self.contdurdrop){
        cell = contdurdrop.dequeueReusableCell(withIdentifier: "dropdowncell2") as! DropDownViewCell
        cell.item.text=item[indexPath.row]

        return cell

    }else if (tableView == self.nationalitydrop){
        cell = nationalitydrop.dequeueReusableCell(withIdentifier: "dropdowncell3") as! DropDownViewCell
        cell.item.text=item[indexPath.row]
        return cell

    }
    return cell

}

2 个答案:

答案 0 :(得分:0)

如果您使用xib然后在加载中注册您的单元格,或者在tableview中遇到dropdowncell1标识符问题。双重检查标识符。

答案 1 :(得分:0)

这是因为标识符,请按照以下步骤操作:

  1. 在单元格的resueidentifer属性中给出标识符名称

  2. 确保单元格已在tableview中注册。

  3. 对于单元格使用相同的标识符,正如我在您的代码中看到的那样,您使用的是不同的标识符但单元格相同,请为每种类型的单元格使其相同。