Saya sedikit bingung dengan jawaban yang diberikan Xcode kepada saya untuk percobaan ini di Panduan Bahasa Pemrograman Swift:
// Use a for-in to iterate through a dictionary (experiment)
let interestingNumbers = [
"Prime": [2, 3, 5, 7, 11, 13],
"Fibonacci": [1, 1, 2, 3, 5, 8],
"Square": [1, 4, 9, 16, 25]
]
var largest = 0
for (kind, numbers) in interestingNumbers {
for number in numbers {
if number > largest {
largest = number
}
}
}
largest
Saya mengerti bahwa ketika kamus sedang ditransversikan, jumlah terbesar sedang diatur ke variabel largest
,. Namun, saya bingung mengapa Xcode mengatakan bahwa largest
sedang diatur 5 kali, atau 1 kali, atau 3 kali, tergantung pada setiap tes.
Ketika melihat melalui kode, saya melihat bahwa itu harus ditetapkan 6 kali dalam "Perdana" saja (2, 3, 5, 7, 11, 13). Maka itu harus melewati angka dalam "Fibonacci" karena semuanya kurang dari yang terbesar, yang saat ini ditetapkan ke 13 dari "Perdana". Kemudian, harus diatur ke 16, dan akhirnya 25 di "Square", menghasilkan total 8 kali.
Apakah saya melewatkan sesuatu yang sepenuhnya jelas?
sumber
Hasilnya akan
("FirstName", "Maninder") ("LastName", "Singh") ("Alamat", "Chandigarh")
sumber
Ini adalah fungsi yang ditentukan pengguna untuk beralih melalui kamus:
sumber
Berikut adalah alternatif untuk percobaan itu (Swift 3.0). Ini memberi tahu Anda dengan tepat nomor jenis mana yang terbesar.
sumber
Jika Anda ingin mengulang semua nilai:
sumber
Array adalah koleksi yang dipesan tetapi kamus dan set adalah koleksi yang tidak terurut. Dengan demikian Anda tidak dapat memprediksi urutan iterasi dalam kamus atau set.
Baca artikel ini untuk mengetahui lebih lanjut tentang Jenis Koleksi: Bahasa Pemrograman Swift
sumber
Anda juga dapat menggunakan
values.makeIterator()
untuk beralih pada nilai dict, seperti ini:Anda juga dapat melakukan iterasi seperti ini, dengan gaya yang lebih cepat:
*
sbItems
adalah tipe dikt[String : NSManagedObject]
sumber