web-dev-qa-db-de.com

UITableVIewCell Error Xcode 7/Swift 2

In diesem Code ist folgender Fehler aufgetreten: 

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

FEHLER: Downcast von 'UITableViewCell?' mit 'UITableViewCell' werden nur Optionals umbrochen; Wolltest du "!" verwenden?

Irgendwelche Ideen?

15
yzet00

In Swift2.0-Methode wird dequeueReusableCellWithIdentifier wie folgt deklariert:

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

Sie sollten UITableViewCell nicht in UITableViewCell? umwandeln. 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!

30
Long Pham

Ab Xcode 7 gibt dequeueReusableCellWithIdentifier immer eine nicht optionale UITableViewCell zurück. 

Sie müssen nicht einmal den Typ angeben, es kann kurz und bündig geschrieben werden als:

let cell = tableView.dequeueReusableCellWithIdentifier("Cell")

oder wenn Sie eine benutzerdefinierte Unterklasse von UITableViewCell haben

guard let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as? SomeOtherCell else { fatalError("unexpected cell dequeued from tableView") }
3
Kelvin Lau
 CMessageCell=self.MessageTable.dequeueReusableCellWithIdentifier("CustomMessageCell") as! CustomMessageCell
0

Verwenden Sie stattdessen diese

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