【问题标题】:Could not cast value of type 'UITableViewCell' (0x1096e3580) to 'SwipeCellKit.SwipeTableViewCell' (0x106d231d0)?无法将“UITableViewCell”(0x1096e3580)类型的值转换为“SwipeCellKit.SwipeTableViewCell”(0x106d231d0)?
【发布时间】:2018-08-01 17:04:28
【问题描述】:

我有一个 TableVC,它有类别,当您点击一个时,它会将您带到其中的项目。但是当我这样做时,当应用程序崩溃时,我会收到以下多个错误分组:

1.

初始化newrealm时出错,Error Domain=io.realm Code=1 "提供 架构版本 0 小于上次设置的版本 1。” UserInfo={NSLocalizedDescription=提供的架构版本 0 小于 比上次设置的版本 1.,错误代码=1}

2.

2018-08-01 12:56:06.152225-0400 Todoey[35380:4690261] 未知类 界面生成器文件中的 SwipeTableViewCell。

3.

无法将 'UITableViewCell' (0x1096e3580) 类型的值转换为 'SwipeCellKit.SwipeTableViewCell' (0x106d231d0)。

4.

2018-08-01 12:56:06.153831-0400 Todoey[35380:4690261] 无法投射 'UITableViewCell' (0x1096e3580) 类型的值 'SwipeCellKit.SwipeTableViewCell' (0x106d231d0)。

我已按照许多previous questions 中列出的步骤进行操作,但没有运气

这是我得到 -Thread 1: signal SIGABRT- 的地方

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! SwipeTableViewCell
    cell.delegate = self
    return cell
}

请帮忙

【问题讨论】:

  • 在Interface Builder中设置table view cell的class为SwipeTableViewCell
  • 我有...我将 SwipeTableViewCell 设置为两个具有 Cell 的 VC 的类。
  • 虽然没有用
  • 该类似乎位于另一个模块SwipeCellKit。如果是这样,您也必须在 IB 中选择模块。
  • 我一直找不到模块 SwipeCellKit。但我不确定我明白你在说什么

标签: ios swift uitableview realm


【解决方案1】:

您所要做的就是选择您的 tableViewCell -> 转到身份检查器 -> 选择自定义类作为 SwipeTableViewCell 和模块作为 SwipeCellKit。然后运行...

【讨论】:

    【解决方案2】:

    我认为您正在使用以下方法将单元格注册覆盖到您的表格视图中:

    @available(iOS 6.0, *)
        open func register(_ cellClass: AnyClass?, forCellReuseIdentifier identifier: String)
    

    viewDidLoad,或viewDidAppear,或viewWillAppear 中的某处,您注册到tableView 的是一个simple UITableCell.self,而不是一个custom 单元格,如下所示:

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

    如果您以编程方式创建 SwipeTableViewCell,请在 viewDidLoad 中使用此方法,如下所示:

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

    如果您的 SwipeTableViewCell 是在情节提要中创建的,我不建议使用此方法,因为您会覆盖构造函数,并且 SwipeTableViewCell 中的对象需要以编程方式进行初始化。只需删除注册行,因为在情节提要中您已经注册了自定义单元格。注意为单元格设置标识符。

    【讨论】:

      【解决方案3】:

      虽然不在问题中,但我在同一个教程,同一个应用程序中遇到了同样的问题。这可能会帮助一些未来的路人。

      它应该适用于:

      let cell = tableView.dequeueReusableCell(withIdentifier: "CategoryCell", for: indexPath) as! SwipeTableViewCell

      它不适用于:

      let cell = UITableViewCell(style: .default, reuseIdentifier: "CategoryCell") as! SwipeTableViewCell

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-30
        • 1970-01-01
        • 1970-01-01
        • 2017-09-08
        • 1970-01-01
        相关资源
        最近更新 更多