Estoy tratando de aprender un poco de Swift Lang y me pregunto cómo convertir el siguiente Objective-C en Swift:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [super touchesBegan:touches withEvent:event];
    UITouch *touch = [touches anyObject];
    if ([touch.view isKindOfClass: UIPickerView.class]) {
      //your touch was in a uipickerview ... do whatever you have to do
    }
}
Más específicamente, necesito saber cómo usar isKindOfClassen la nueva sintaxis.
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
    ???
    if ??? {
        // your touch was in a uipickerview ...
    }
}
                
                    
                        ios
                                swift
                                reflection
                                introspection
                                
                    
                    
                        lkemitchll
fuente
                
                
            fuente

Editar
Como se señaló en la respuesta de @ Kevin , la forma correcta sería utilizar un operador de conversión de tipo opcional
as?. Puede leer más al respecto en la secciónOptional ChainingsubsecciónDowncasting.Editar 2
Como se señaló en la otra respuesta del usuario @KPM , usar el
isoperador es la forma correcta de hacerlo.fuente
: UITouchen este, ya que la inferencia de tipos sabrá lo que es por elas UITouchelencoUIPickerView.self. ¿Es correcto?Puede combinar el cheque y emitir en una sola declaración:
Entonces puedes usar
pickerdentro delifbloque.fuente
if touch.view is UIPickerView {...}iso_que existía en el momento se hizo esta pregunta, pocos días después de la lengua fue anunciado por primera vez.Yo usaría:
fuente
Otro enfoque que usa la nueva sintaxis Swift 2 es usar guardia y anidarlo todo en un condicional.
fuente