Saya mencoba mengambil sedikit bahasa Swift dan saya bertanya-tanya bagaimana cara mengubah Objective-C berikut menjadi 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
}
}
Lebih khusus lagi saya perlu tahu cara menggunakan isKindOfClass
sintaks baru.
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
???
if ??? {
// your touch was in a uipickerview ...
}
}
ios
swift
reflection
introspection
lkemitchll
sumber
sumber
Edit
Seperti yang ditunjukkan dalam jawaban @ Kevin , cara yang benar adalah dengan menggunakan operator cor tipe opsional
as?
. Anda dapat membaca lebih lanjut tentang itu di bagianOptional Chaining
sub bagianDowncasting
.Edit 2
Seperti yang ditunjukkan pada jawaban lain oleh pengguna @KPM , menggunakan
is
operator adalah cara yang tepat untuk melakukannya.sumber
: UITouch
ini, karena tipe inferensi akan tahu apa itu oleh paraas UITouch
pemeranUIPickerView.self
. Apakah itu benar?Anda dapat menggabungkan cek dan melemparkan ke dalam satu pernyataan:
Kemudian Anda bisa menggunakannya
picker
di dalamif
blok.sumber
if touch.view is UIPickerView {...}
is
atau_
ada pada saat pertanyaan ini diajukan, beberapa hari setelah bahasa tersebut pertama kali diumumkan.Saya akan menggunakan:
sumber
Pendekatan lain menggunakan sintaks Swift 2 baru adalah dengan menggunakan pelindung dan membuat sarang semuanya dalam satu kondisi.
sumber