新的Swift 3警告崩溃应用程序

时间:2016-10-02 18:48:24

标签: ios swift swift3

当我实施任何建议修复时,应用程序在运行时崩溃。当我在没有推荐修复的情况下编译/运行应用程序时,应用程序按预期运行。

screen shot of error is at this link

原始方法如下:

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

    //this let statement is my original line of code prior to swift 3 conversion and it worked fine
    let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier:"Cell")

    //i've tried using the statement below instead but still getting same error
    //let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)

    cell.textLabel?.text = userSummaryArray[(indexPath as NSIndexPath).row] as String
    cell.textLabel!.font = UIFont(name:"Helvetica Neue", size:17)

    cell.accessoryType = .disclosureIndicator

    userSummaryTable.rowHeight = 25

    return cell

}

在Xcode8中转换为swift 3之后我现在收到有关此方法的警告:

Instance method 'tableView(_:cellForIndexPath:)' nearly matches  optional requirement 'tableView(_:heightForRowAt:)' of protocol 'UITableViewDelegate'

建议有两种选择"修复"警告:

Make 'tableView(_:cellForIndexPath:)' private to silence this warning

OR

Add '@nonobjc' to silence this warning

这两个"修复"崩溃应用程序。原始代码在新的swift中运行良好,并且在旧版本的swift中运行良好。这些建议是什么?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:6)

制作

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

而不是

{{1}}

Xcode正试图帮助你,但却无法识别

答案 1 :(得分:1)

我有同样的问题。连同Lu_s的答案,请确保将UITableViewDataSource添加到类中。

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {   }