2016-10-02 5 views
1

Wenn ich entweder vorgeschlagenen Fehler implementieren, stürzt die App beim Ausführen ab. Wenn ich die App ohne die empfohlene Korrektur kompiliere/laufe, läuft die App wie erwartet.New Swift 3 Warnung Abstürze App

screen shot of error is at this link

die ursprüngliche Methode ist wie folgt:

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 

} 

nach in Xcode8 zu schnellen 3 Umwandlung ich bin jetzt eine Warnung auf dieser Methode erhalten, die lautet:

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

Es gibt zwei Optionen, die empfohlen werden, um die Warnung zu "reparieren":

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

OR

Add '@nonobjc' to silence this warning 

die App Beide dieser "Fixes" zum Absturz bringen. Der ursprüngliche Code funktioniert gut in der neuen Swift und funktionierte gut in der älteren Version von Swift. Was sind diese Empfehlungen?

Jede Hilfe wird sehr geschätzt.

Antwort

5

Sie sich, dass

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

statt

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

Xcode versucht, Ihnen zu helfen, aber nicht erkennt, dass

+0

i auf Ihren Vorschlag geändert, aber meine App stürzt ab, wenn laufen, so habe ich wieder auf die zurück 'Funktionstableview (_ Tableview: UITableView, cellForRowAtIndexPath indexPath: IndexPath) -> UITableViewCell {' Code und die App läuft erfolgreich ; aber ich habe immer noch keine lösung für meine ursprüngliche frage .... warum bekomme ich die beiden warnungen zu dieser methode? –

+0

Sie müssen nur folgen Autocomplete und es wird funktionieren, reinigen Sie das Projekt und zeigen Sie bitte Ihre Methode von Autocomplete hinzugefügt und was genau Crash-Fehler sagt, wenn es einen Absturz gibt es einige Nachricht –

1

ich hatte das gleiche Problem. Stellen Sie zusammen mit der Antwort von Lu_s sicher, dass Sie der Klasse UITableViewDataSource hinzufügen.

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { } 
Verwandte Themen