无法将types'UITableViewCell'的值转换为'(AppName)。(CustomCellName)'

我目前正在尝试使用xCode 6.3 swift 1.2创build自定义表格视图单元格。 出于某种原因在cellforRowAtIndexPath方法,我似乎无法设置我的单元格variables。 代码会编译,但是当这行代码命中时:

var cell:MessageCell = tableView.dequeueReusableCellWithIdentifier("messageCell") as! MessageCell 

我得到这个错误:无法将types'UITableViewCell'(0x1112f5a18)的值转换为'CampusExchange.MessageCell'(0x10e8318f0)。

以下是我的完整方法:(如果您想知道如何设置消息,我正在使用Parse)

  func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { var cell:MessageCell = tableView.dequeueReusableCellWithIdentifier("messageCell") as! MessageCell let message = messagesArray[indexPath.row]["Message"] as? String cell.messageOutlet.text = message return cell } 

感谢您的任何帮助。 我似乎无法得到这个工作。

有几件事你可以检查这个:

  1. 看看你的表是否链接到你的类,通常通过@IBOutlet weak var tableView: UITableView!

  2. 注册自定义表视图单元格: self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")请注意,即使您的自定义单元格具有不同的类和ID,也使用“UITableViewCell”和标识符“单元格”。

  3. 在cellForRowAtIndexPath中出列你的单元格: let cell: MessageCell = self.tableView.dequeueReusableCellWithIdentifier("messageCell") as! MessageCell let cell: MessageCell = self.tableView.dequeueReusableCellWithIdentifier("messageCell") as! MessageCell现在使用正确的单元标识符。

viewDidLoad()方法中注册你的CustomCell:

 self.tableView.register(CustomCell.self, forCellReuseIdentifier: "Cell") 

在viewDidLoad()

 // register custom table view cell from nib self.tableView.registerNib(UINib(nibName: "MessageCell", bundle: nil), forCellReuseIdentifier: "messageCell") 

我有相同的错误信息。 但是对于我来说,问题是我没有在界面生成器中设置自定义单元的类。

首先,我build议你使用CocoaClass重新创build你的单元类。 我有一个非常相似的错误 – 我创build了一个CollectionViewCell,当我意识到自己的错误时,我决定重命名父类。 但是,编译器没有注意到任何错误,在构build期间我有这个错误。

Swift 3语法:

 self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell") 

我有同样的错误。 obo2O在他的评论中说,他的解决scheme为我工作:

  1. 转到Interface Builder
  2. 点击相关的故事板
  3. 点击tableview中的相关单元格
  4. 在“实用程序”面板(右侧)中,单击“显示标识检查器”图标
  5. 在“自定义类”部分 – >“类”字段中,将该类设置为其他任何内容并运行该应用程序。 应用程序崩溃,因为classX不能转换为classY
  6. 在“自定义类”部分 – >“类”字段中,将类设置为正确的类并重新运行。