我试图从我的数据源和以下代码行中删除一行:
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/ if var可选绑定仅在表达式右侧的结果为可选时有效。如果右侧的结果不是可选的,则不能使用此可选绑定。此可选绑定的目的是检查nil变量,并且如果不是,则仅使用该变量nil。
if let
if var
nil
在您的情况下,tableView参数被声明为非可选类型UITableView。保证永远不会nil。因此,这里不需要进行可选的绑定。
tableView
UITableView
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。
tv