一尘不染

条件绑定:如果让出错-条件绑定的初始化程序必须具有Optional类型

swift

我试图从我的数据源和以下代码行中删除一行:

if let tv = tableView {

导致以下错误:

条件绑定的初始化程序必须具有Optional类型,而不是UITableView

这是完整的代码:

// Override to support editing the table view.
func tableView(tableView: UITableView, commitEditingStyle editingStyle:UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
    if editingStyle == .Delete {

        // Delete the row from the data source

    if let tv = tableView {

            myData.removeAtIndex(indexPath.row)

            tv.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)

我应该如何纠正以下问题?

 if let tv = tableView {

阅读 230

收藏
2020-07-07

共1个答案

一尘不染

if let/ if var可选绑定仅在表达式右侧的结果为可选时有效。如果右侧的结果不是可选的,则不能使用此可选绑定。此可选绑定的目的是检查nil变量,并且如果不是,则仅使用该变量nil

在您的情况下,tableView参数被声明为非可选类型UITableView。保证永远不会nil。因此,这里不需要进行可选的绑定。

func tableView(tableView: UITableView, commitEditingStyle editingStyle:UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
    if editingStyle == .Delete {
        // Delete the row from the data source
        myData.removeAtIndex(indexPath.row)
        tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)

我们要做的就是摆脱if let并将其中出现的任何内容更改tv为just tableView

2020-07-07