快速输入String()和String.self有什么区别?

时间:2018-10-01 15:07:51

标签: swift uitableview

我有点想快速了解.self,总是将自己的自定义单元格注册在collectionView或tableView中,我必须像customCollectionViewCell.self一样注册,但为什么不这样做,例如{{1 }}?

我曾在操场上尝试在变量中键入customCollectionViewCell()来查看会发生什么,并且没有错误,但是当我尝试给它赋值时,出现以下错误

  

无法将类型为'String'的值分配为类型String.self

这是什么意思?

1 个答案:

答案 0 :(得分:5)

Type()Type.init()的简写形式,因此String()调用String.init()并因此初始化String

另一方面,String.self返回String的元类型,该元类型表示String类型本身而不是该类型的任何实例。有关元类型的更多信息,请参见官方Swift语言参考的Metatype Type部分。

在您的特定示例中,您需要注册UITableViewCell子类类型而不是特定类型的实例,因此您需要使用YourCellType.self