2015-08-02 16 views
15

ich in diesem Code in den folgenden Fehler lautete:UITableViewCell Fehler Xcode 7/Swift 2

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    var cell: UITableViewCell? = tableView.dequeueReusableCellWithIdentifier("Cell") as? UITableViewCell 

ERROR: '? UITableViewCell' Niedergeschlagen von zu 'UITableViewCell' entpackt nur Optionale; Wolltest du '!'

Irgendwelche Ideen?

+0

Ändern Sie 'UITableViewCell?' In 'UITableViewCell!' – Kendel

Antwort

30

In Swift2.0 Verfahren dequeueReusableCellWithIdentifier ist erklären, wie:

@available(iOS 6.0, *) 
func dequeueReusableCellWithIdentifier(identifier: String, forIndexPath indexPath: NSIndexPath) -> UITableViewCell 

Sie nicht UITableViewCell-UITableViewCell? werfen sollen. Siehe Code unten.

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath) 

    // Configure the cell... 

    return cell 
} 

Hoffe, das hilft!

+0

Dies ist die richtige Antwort. +1 – dhruvvyas90

0

verwenden stattdessen

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
var cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell") 
-2
var cell:UITableViewCell! = tableView.dequeueReusableCellWithIdentifier(identifier) as UITableViewCell! 
+2

Willkommen bei SO! Bitte geben Sie immer Erklärungen zu Ihren Antworten an. Code-Only-Antworten sind selten hilfreich. Zuallererst muss jeder, der Ihre Antwort liest, herausfinden, was Sie sagen wollen (hier ist es nur ein Unterschied von einem Zeichen), und dann müssen wir alle raten, warum Sie dies als Lösung vorschlagen. Fragen Sie sich immer, warum ist Ihre Antwort besser als die anderen bereits vorhandenen Antworten? Wenn du das nicht erklären kannst, poste nicht. – cfi

3

Ab Xcode 7, dequeueReusableCellWithIdentifier wird immer eine nicht optional UITableViewCell zurückzukehren.

Sie brauchen nicht einmal die Art angeben, kann es auf den Punkt geschrieben werden als:

let cell = tableView.dequeueReusableCellWithIdentifier("Cell") 

oder wenn Sie eine benutzerdefinierte Unterklasse von UITableViewCell

guard let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as? SomeOtherCell else { fatalError("unexpected cell dequeued from tableView") } 
-1

haben, wenn Sie verwenden möchten Kennung sollten Sie diese Methoden verwenden:

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return 100 
} 


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("WHAT-EVER-YOU-WANT-TO-CALL-IT", forIndexPath: indexPath) 
    let label = cell.viewWithTag(1000) as! UILabel 
} 
    return cell 
0
CMessageCell=self.MessageTable.dequeueReusableCellWithIdentifier("CustomMessageCell") as! CustomMessageCell 
Verwandte Themen