web-dev-qa-db-fra.com

Erreur UITableVIewCell Xcode 7/Swift 2

J'ai rencontré l'erreur suivante dans ce code: 

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

ERREUR: Downcast à partir de 'UITableViewCell?' pour 'UITableViewCell' ne déballe que les options; vouliez-vous utiliser '!'?

Des idées?

15
yzet00

Dans Swift2.0, la méthode dequeueReusableCellWithIdentifier est déclarée comme:

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

Vous ne devriez pas transtyper UITableViewCell en UITableViewCell?. Voir le code ci-dessous.

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

    // Configure the cell...

    return cell
}

J'espère que cela t'aides!

30
Long Pham

À partir de Xcode 7, dequeueReusableCellWithIdentifier renverra toujours un UITableViewCell non facultatif. 

Vous n'avez même pas besoin de spécifier le type, il peut être écrit succinctement comme suit:

let cell = tableView.dequeueReusableCellWithIdentifier("Cell")

ou si vous avez une sous-classe personnalisée de UITableViewCell

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
Jignesh Radadiya

Utilisez ceci à la place

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