Ios Swift 3 Generic无法转换UITableViewCell类型的值

Ios Swift 3 Generic无法转换UITableViewCell类型的值,ios,swift,uitableview,generics,swift3,Ios,Swift,Uitableview,Generics,Swift3,我有一个可以接受泛型类型的自定义单元格 class MyCell<T>: UITableViewCell where T: MyCellDataSource, T: MyCellDelegate 在Swift 3.0中 我最近使用了相同的实现。 我通过下面的代码解决了这个问题 let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as? MyCell<TName>

我有一个可以接受泛型类型的自定义单元格

class MyCell<T>: UITableViewCell where T: MyCellDataSource, T: MyCellDelegate
在Swift 3.0中 我最近使用了相同的实现。 我通过下面的代码解决了这个问题

let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as? MyCell<TName>
//Configure cell here
return cell!
let cell=tableView.dequeueReusableCell(带有标识符:“cell”,for:indexPath)作为?迈塞尔
//在此处配置单元格
返回单元!
希望对Swift 3.0有所帮助 我最近使用了相同的实现。 我通过下面的代码解决了这个问题

let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as? MyCell<TName>
//Configure cell here
return cell!
let cell=tableView.dequeueReusableCell(带有标识符:“cell”,for:indexPath)作为?迈塞尔
//在此处配置单元格
返回单元!

希望它对您有所帮助

您可以将
let cell=tableView.dequeueReusableCell(带有标识符:“cell”,for:indexPath)作为!迈塞尔
我想不,那不行。这是通常的方法,我已经尝试过了。您不能强制转换为未指定的泛型类型,只能转换为它的具体版本,即指定了泛型
t
。下面的内容是:让cell=tableView.dequeueReusableCell(带有标识符:“cell”,for:indexath)为!迈塞尔是的,我知道。但具体如何?正如您在我的问题中所看到的,我已经明确指出了类中的两个协议。我知道你给出的格式,但我想知道正确的方法,因为正如你所看到的,它有多个协议。协议只是泛型类型
T
的类型约束,不管你包含多少这样的类型,重要的是一些实际的具体类型符合这些(因此可用于构造具体类型
MyCell
)。您不希望将协议转换为类型,而是转换为符合协议蓝图上的类型约束的类型。您可以执行
let cell=tableView.dequeueReusableCell(带标识符:“cell”,用于:indexath)正如!MyCell
我认为不行。这是通常的方式,我已经尝试过了。你不能强制转换为未指定的泛型类型,只能转换为它的具体版本,即指定了泛型
t
。大致如下
让cell=tableView.dequeueReusableCell(带有标识符:“cell”,用于:indexPath)as!MyCell
@dfri是的,我知道。但具体如何?正如你在我的问题中所看到的,我已经明确指出了类中的两个协议。我知道你给出的格式,但我想知道正确的方法,因为正如你所看到的,它有多个协议。协议只是泛型<代码的类型约束>T,不管包含多少这样的类型,重要的是一些实际的具体类型符合这些类型(因此可以用于构造具体类型
MyCell
)。您不希望将协议转换为类型,而是转换为符合协议蓝图上的类型约束的类型。