Ios 无法将“UITableViewCell”类型的值强制转换为(AppName)。(CustomCellName)'

Ios 无法将“UITableViewCell”类型的值强制转换为(AppName)。(CustomCellName)',ios,xcode,uitableview,swift,Ios,Xcode,Uitableview,Swift,我目前正在尝试使用xCode 6.3 swift 1.2创建一个自定义表视图单元格。由于CellForRowatineXpath方法中的某些原因,我似乎无法设置单元格变量。代码将编译,但当这行代码命中时: var cell:MessageCell = tableView.dequeueReusableCellWithIdentifier("messageCell") as! MessageCell 我收到此错误:无法将“UITableViewCell”0x1112f5a18类型的值强制

我目前正在尝试使用xCode 6.3 swift 1.2创建一个自定义表视图单元格。由于CellForRowatineXpath方法中的某些原因,我似乎无法设置单元格变量。代码将编译,但当这行代码命中时:

    var cell:MessageCell = tableView.dequeueReusableCellWithIdentifier("messageCell") as! MessageCell
我收到此错误:无法将“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
}
谢谢你的帮助。我似乎无法让它工作。

在viewDidLoad中

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

在此场景中,您可以检查以下几点:

查看您的表是否链接到您的类,通常是通过@ibvar tableView:UITableView

注册自定义表视图单元格:self.tableView.registerUITableViewCell.self,forCellReuseIdentifier:单元格 请注意,即使自定义单元格具有不同的类和id,也可以使用UITableViewCell和标识符单元格

在cellForRowAtIndexPath:let cell:MessageCell=self.tableView.DequeueReusableCellWith IdentifierMessageCell as!中将您的单元格出列!信元 现在使用正确的单元标识符


在viewDidLoad方法中注册CustomCell:


首先,我建议您使用CocoaClass重新创建cell类。我也犯了类似的错误——我创建了一个CollectionViewCell,当我意识到我的错误时,我决定简单地重命名父类。然而,编译器并没有注意到任何错误,我在构建过程中出现了这个错误。

我收到了相同的错误消息。但对我来说,问题是我没有在interface builder中设置自定义单元格的类。

Swift 3语法:

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

我也犯了同样的错误。正如obo2O在评论中所说,他的解决方案对我有效:

转到界面生成器 点击相关的故事板 单击tableview中的相关单元格 在右侧的“实用程序”面板中,单击“显示标识检查器”图标 在“自定义类”部分->类字段中,将类设置为任何其他值,然后运行应用程序。应用程序崩溃,因为classX无法转换为classY 在“自定义类”部分->类字段中,将类设置为正确的类并重新运行。 使用cocoaClass重新创建类并选择UItableViewCell


我也遇到了同样的问题,这对我来说很有效。

我也遇到了同样的问题,我为cell设置了自定义类,但忘记了设置模块

在选择了这样的模块之后,它工作了


在我的情况下,UITableViewCell类没有改变。最初它是DetailStableViewCellClass,但我删除并添加了名为TableViewCellClass的新类。但是我忘了在这里更改单元格类名

因此,再次检查并更改TableViewCell类名,请参见下面的屏幕截图

X代码9.4 与这里流行的答案不同,此解决方案通过自定义tableview单元格修复了我的噩梦。如果您正在使用故事板,并且所有内容都已正确连接,则不必在viewDidLoad中注册自定义tableView单元格。 从viewDidLoad中删除:
self.tableView.registerUITableViewCell.self,forCellReuseIdentifier:cell

保持自定义单元格类名和单元格id相同:

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

看起来你还没有在故事板中为原型单元设置自定义类,我已经设置好了。但由于某种原因,它不起作用。随机工作的是删除我手机的自定义类。然后构建、崩溃应用程序,然后返回并重置自定义类。现在它似乎起作用了。谢谢你给我指出了正确的方向!这里也是一样,我设置了自定义类,但它仍然给了我那个错误。我只需点击字段并点击回车键,轻推它,然后它就开始工作了。可能是Xcode错误?在我的特殊情况下,代码是正确的,但是在我创建UITableviewCell的情节提要中,我忘记了为UITableviewCell设置自定义类的检查器。在Custom类下的inspector中,它仍然表示UITableViewCell,而它本应该表示UserInfoCell,这是我创建的自定义子类的名称。第2点。帮了很多忙。谢谢第二点也是我的问题!这是至关重要的,因为对于普通的tableview控制器,要注册的单元没有指定,所以可以相当直观地假设重用标识符应该用于这两个位置。我花了很长时间才找到这个答案。感谢我告诉自己第二点非常有用。非常感谢!你不需要以编程的方式完成所有这些步骤,你有故事板,检查这个修复了我的问题。谢谢你帮我修好的!
   self.tableView.register(CustomCell.self, forCellReuseIdentifier: "CustomCell")