如何动态转换为在 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
我需要将 return 值转换为我需要保持动态的特定类型,例如
let cellType = "CellTypeToBeResolved"
cell = (tableView.dequeueReusableCellWithIdentifier("myID") as? CellTypeToBeResolved)!
在 Swift 2.0 中这怎么可能? 谢谢!
你做不到,因为 Swift(故意)遗漏了两块拼图:
您不能将字符串转换为 class。
更重要的是,您不能向下转换为表示为变量的 class。要转换为的 class 必须是文字 class,即它必须在编译时已知。编译器需要知道这个转换是合法的,而且它需要知道在编译时如何处理这个变量。如果您希望能够将 MyCoolTableCell 实例消息发送到此单元格,则需要在代码中使用文字 MyCoolTableCell 名称——不是字符串,也不是包含类型的变量,而是类型 本身 .
您可以使用 NSClassFromString 将您的字符串转换为您想要的 class,然后您可以使用它来转换 tableviewCell