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

时间:2015-04-23 01:49:24

标签: ios xcode uitableview swift

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

    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
}

感谢您提供的任何帮助。我似乎无法让它发挥作用。

12 个答案:

答案 0 :(得分:65)

在这种情况下,您可以检查以下几项内容:

  1. 查看您的表格是否与您的班级相关联,通常是@IBOutlet weak var tableView: UITableView!

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

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

答案 1 :(得分:38)

viewDidLoad()方法注册您的CustomCell:

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

答案 2 :(得分:9)

在viewDidLoad()

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

答案 3 :(得分:9)

我有同样的问题,我为单元格设置自定义类但忘记设置模块 enter image description here

选择这样的模块之后,就可以了

enter image description here

答案 4 :(得分:6)

X代码9.4
与这里流行的答案之一不同,此解决方案使用自定义表格单元格解决了我的噩梦。如果您正在使用情节提要,并且所有内容均已正确连接,则不必在viewDidLoad中注册自定义tableView单元格。

从viewDidLoad中删除
self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")

答案 5 :(得分:5)

我有同样的错误消息。但对我来说,问题是我没有在界面构建器中设置我的自定义单元格的类。

答案 6 :(得分:2)

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

所以再次检查并更改TableViewCell类名称见下面的屏幕截图

enter image description here

答案 7 :(得分:0)

首先,我建议您使用CocoaClass重新创建您的单元类。我有类似的错误 - 我创建了一个CollectionViewCell,当我认识到我的错误时,我决定简单地重命名父类。但是,编译器没有注意到任何错误,我在构建期间遇到了这个错误。

答案 8 :(得分:0)

Swift 3语法:

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

答案 9 :(得分:0)

我有同样的错误。正如obo2O在评论中指出的那样,他的解决方案对我有用:

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

答案 10 :(得分:0)

使用[30/Dec/2017 09:28:05] "GET /accounts/checkname?username=wepfwe HTTP/1.1" 301 0 [30/Dec/2017 09:28:05] "GET /accounts/checkname/?username=wepfwe HTTP/1.1" 200 4 [30/Dec/2017 09:28:11] "GET /accounts/checkname/?username=Dmitry HTTP/1.1" 200 4 [30/Dec/2017 09:28:12] "GET /accounts/checkname/?username=DmitryA HTTP/1.1" 200 4 [30/Dec/2017 09:28:12] "GET /accounts/checkname/?username=DmitryAd HTTP/1.1" 200 4 [30/Dec/2017 09:28:12] "GET /accounts/checkname/?username=DmitryAdm HTTP/1.1" 200 4 [30/Dec/2017 09:28:12] "GET /accounts/checkname/?username=DmitryAdmi HTTP/1.1" 200 4 duplicate [30/Dec/2017 09:28:13] "GET /accounts/checkname/?username=DmitryAdmin HTTP/1.1" 200 5 重新创建课程,然后选择cocoaClass

我遇到了同样的问题。

答案 11 :(得分:0)

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

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