Saya membuka dua nilai dari kamus dan sebelum menggunakannya saya harus memberikannya dan menguji untuk jenis yang tepat. Inilah yang saya pikirkan:
var latitude : AnyObject! = imageDictionary["latitude"]
var longitude : AnyObject! = imageDictionary["longitude"]
if let latitudeDouble = latitude as? Double {
if let longitudeDouble = longitude as? Double {
// do stuff here
}
}
Tapi saya ingin mengemas keduanya jika biarkan menjadi satu. Sehingga akan seperti itu:
if let latitudeDouble = latitude as? Double, longitudeDouble = longitude as? Double {
// do stuff here
}
Sintaks itu tidak berfungsi, jadi saya bertanya-tanya apakah ada cara yang indah untuk melakukan itu.
if-statement
swift
optional
Suntoch
sumber
sumber
Jawaban:
Pembaruan untuk Swift 3:
Yang berikut ini akan berfungsi di Swift 3:
Pastikan untuk mengingat bahwa jika salah satu binding opsional yang dicoba gagal, kode di dalam
if-let
blok tidak akan dieksekusi.Catatan: klausa tidak semua harus klausa 'mari', Anda dapat memiliki serangkaian cek boolean yang dipisahkan oleh koma.
Sebagai contoh:
Swift 1.2:
Apple mungkin telah membaca pertanyaan Anda, karena kode yang Anda harapkan dapat dikompilasi dengan benar dalam Swift 1.2 (dalam beta hari ini):
Swift 1.1 dan sebelumnya:
Inilah kabar baiknya - Anda benar-benar dapat melakukan ini. Pernyataan peralihan pada tupel dari dua nilai Anda dapat menggunakan pencocokan pola untuk melakukan keduanya
Double
pada saat yang sama:Pembaruan: Versi kode ini sekarang berfungsi dengan baik.
sumber
if let app = UIApplication.sharedApplication().delegate as? AppDelegate, let window = app.window {...}
. Apakah 2ndlet
juga mengikat opsional? Maksud sayaapp
tidak lagi opsional. Baik?app
bukan lagi opsional, tetapiwindow
propertinya adalah (tipenyaUIWindow?
), jadi itulah yang Anda buka.Dengan Swift 3, Anda dapat menggunakan perangkaian opsional, pergantian pernyataan atau pola opsional untuk menyelesaikan masalah Anda.
1. Menggunakan
if let
(binding opsional / chaining opsional)The Swift Bahasa Pemrograman menyatakan tentang chaining opsional:
Oleh karena itu, dalam kasus paling sederhana, Anda dapat menggunakan pola berikut untuk menggunakan beberapa kueri dalam operasi rantai pilihan Anda:
2. Menggunakan tupel dan pengikatan nilai dalam pernyataan sakelar
Sebagai alternatif dari perangkaian opsional sederhana, pernyataan switch dapat menawarkan solusi berbutir halus ketika digunakan dengan tupel dan penjilidan nilai:
3. Menggunakan tupel dengan
if case
(pola opsional)if case
( pola opsional ) memberikan cara mudah untuk membuka nilai enumerasi opsional. Anda dapat menggunakannya dengan tuple untuk melakukan beberapa perangkaian opsional dengan beberapa kueri:sumber
Swift 3.0
sumber