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 isKindOfClass
en 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 Chaining
subsecciónDowncasting
.Editar 2
Como se señaló en la otra respuesta del usuario @KPM , usar el
is
operador es la forma correcta de hacerlo.fuente
: UITouch
en este, ya que la inferencia de tipos sabrá lo que es por elas UITouch
elencoUIPickerView.self
. ¿Es correcto?Puede combinar el cheque y emitir en una sola declaración:
Entonces puedes usar
picker
dentro delif
bloque.fuente
if touch.view is UIPickerView {...}
is
o_
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