如何动态转换为在 Swift 2.0 的字符串中命名的类型?

How is it possible to dynamically cast to a Type that is named in a string with Swift 2.0?

我需要将 return 值转换为我需要保持动态的特定类型,例如

let cellType = "CellTypeToBeResolved"
cell = (tableView.dequeueReusableCellWithIdentifier("myID") as? CellTypeToBeResolved)!

在 Swift 2.0 中这怎么可能? 谢谢!

你做不到,因为 Swift(故意)遗漏了两块拼图:

  • 您不能将字符串转换为 class。

  • 更重要的是,您不能向下转换为表示为变量的 class。要转换为的 class 必须是文字 class,即它必须在编译时已知。编译器需要知道这个转换是合法的,而且它需要知道在编译时如何处理这个变量。如果您希望能够将 MyCoolTableCell 实例消息发送到此单元格,则需要在代码中使用文字 MyCoolTableCell 名称——不是字符串,也不是包含类型的变量,而是类型 本身 .

您可以使用 NSClassFromString 将您的字符串转换为您想要的 class,然后您可以使用它来转换 tableviewCell