Estou tentando pegar um pouco da linguagem Swift e estou pensando em como converter o seguinte Objective-C em 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
}
}
Mais especificamente, preciso saber como usar isKindOfClass
a nova sintaxe.
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
???
if ??? {
// your touch was in a uipickerview ...
}
}
ios
swift
reflection
introspection
lkemitchll
fonte
fonte
Editar
Conforme apontado na resposta de @ Kevin , a maneira correta seria usar o operador de conversão de tipo opcional
as?
. Você pode ler mais sobre isso na seçãoOptional Chaining
sub-seçãoDowncasting
.Editar 2
Conforme apontado na outra resposta do usuário @KPM , usar o
is
operador é o caminho certo para fazê-lo.fonte
: UITouch
em um presente, como o tipo de inferência vai saber o que é peloas UITouch
elencoUIPickerView.self
. Está correto?Você pode combinar a verificação e converter em uma declaração:
Então você pode usar
picker
dentro doif
bloco.fonte
if touch.view is UIPickerView {...}
is
ou_
existia no momento em que essa pergunta foi feita, alguns dias depois que o idioma foi anunciado pela primeira vez.Eu usaria:
fonte
Outra abordagem usando a nova sintaxe do Swift 2 é usar a proteção e aninhar tudo em uma condição.
fonte