Tratar instancia genérica de TypeA como instancia genérica de SuperclassOfTypeA

Digamos que tengo un var responders = [String:[UIResponder]]() (lectura: Dictionary con String s como keys y Array s de UIResponder s como valores).

¿Puedo tratar un [String:[UIView]] como si fuera un [String:[UIResponder]] ?

¿No sería lo mismo que lanzar una UIView a UIResponder ?

 import UIKit var responders = [String:[UIResponder]]() var views = [String:[UIView]]() responders = views // Error: 'UIView' is not identical to 'UIResponder' responders = views as [String:[UIResponder]] // Error: 'UIView' is not identical to 'UIResponder' 

Es incluso más extraño que usar solo un [UIResponder] (léase: Array of UIResponders ) funcione bien.

 import UIKit var responders = [UIResponder]() var views = [UIView]() responders = views // No error responders = views as [UIResponder] // No error 

¡Gracias por cualquier ayuda! 🙂

Puedes forzar el lanzamiento usando reinterpretCast :

 import UIKit var responders = [String:[UIResponder]]() var views = [String:[UIView]]() responders = reinterpretCast(views) 

Aunque al hacer esto, usted asume la responsabilidad de garantizar que el elenco sea válido.