我正在将我的应用程序从Swift 2更新到Swift 4,当通过以下方式将UITableViewCell转换为String时,似乎会丢失一些功能:
String(MyTableViewCell)
我尝试在其中使用的实例为:
let cell = tableView.dequeueReusableCell(withIdentifier:String(PlayerReportCell), forIndexPath: indexPath) as! PlayerReportCell
这只是失去功能还是有新的方法吗?
我得到的错误是..
Cannot invoke initializer for type 'String' with an argument list of type '((PlayerReportCell).Type)'
答案 0 :(得分:1)
我不记得以前能够做到,但是在Swift 4.2中,您可以做到:
"\(PlayerReportCell.self)"
基本上是使用字符串插值来插值类型的元类型对象。
或者,使用String(describing:)
String(describing: PlayerReportCell.self)
请注意,这依赖于实现细节,并且可能会在将来的快速版本中中断,就像您的旧代码一样。最好将标识符硬编码在其中。