表格视图中未显示任何数据可用标签

时间:2017-07-10 10:22:00

标签: ios swift xcode uitableview

我有一个带有表视图的视图控制器。当有数据时,它将填充在表视图中。如果没有数据,则不必显示数据标签。我使用下面的代码。但它在这条线上的崩溃:

func numberOfSections(in tableView: UITableView) -> Int {

    var numOfSection: NSInteger = 0

    if (self.alldata?.count)! > 0 {

        self.tableView.backgroundView = nil
        numOfSection = 1

    } else {

        let rect = CGRect(x: 0,
                          y: 0,
                          width: self.tableView.bounds.size.width,
                          height: self.tableView.bounds.size.height)
        let noDataLabel: UILabel = UILabel(frame: rect)

        noDataLabel.text = "No Data Available"
        noDataLabel.textColor = UIColor(red: 22.0/255.0, green: 106.0/255.0, blue: 176.0/255.0, alpha: 1.0)
        noDataLabel.textAlignment = NSTextAlignment.center
        self.tableView.backgroundView = noDataLabel

    }
    return numOfSection

}

此行崩溃:if (self.alldata?.count)! > 0 { 崩溃:(lldb)。我没有进一步的信息。

提前致谢!

3 个答案:

答案 0 :(得分:1)

你强行打开数组,没有数据时为nil。因为它崩溃了。

像这样检查

if let alldata = self.alldata, alldata.count > 0 {
      self.tableView.backgroundView = nil
      numOfSection = 1
}

答案 1 :(得分:1)

(self.alldata?.count)! > 0更改为self.alldata?.count ?? 0 > 0。你强行展开(self.alldata?.count)的结果,所以如果alldata为零你就强迫展开一个零;

另一方面,在numberOfSections等功能中产生副作用是一种非常糟糕的做法。该函数应该只返回部分的数量而不再执行任何操作。将UI操作放在其他位置。

答案 2 :(得分:0)

崩溃可能是因为def post(self, request, *args, **kwargs): lform = forms.DockerAuthForm(request.POST) context = {} if lform.is_valid(): data = lform.cleaned_data() name = data['docker_name'] password = data['docker_pass'] context = { "mname": name, "mpass": password } return render(request, 'dockerDep/response.html', context) 为零并且您尝试在alldata中展开它。尝试修改它,如

(self.alldata?.count)!