- Published on
Swift-da Dictionary’lardan qanday foydalanish kerak
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
Hammaga yana xush kelibsiz!
Hammaga xush kelibsiz, mening ismim Nik, bu “Swiftful Thinking”. O‘tgan videoda arraylar va setlarni ko‘rdik. Bu videoda esa dictionarylarni o‘rganamiz – bu yana bir to‘plam turi, ko‘p ma’lumotni birlashtirishning boshqa usuli. Dictionary’lar array’lardan biroz farqli ishlaydi va turli holatlarda qo‘llaniladi. Ushbu qisqa kirish videosida iloji boricha ko‘proq misollar keltiraman.
Yuqori darajadagi farqlar:
- Dictionary’lar indekslar emas, kalitlar (keys) asosida ishlaydi.
- Array’da indekslar (0, 1, 2, 3) bo‘lsa, dictionary’da kalitlar bor – bu haqiqiy lug‘atga o‘xshaydi: kalit so‘zni qidirasiz va uning qiymatini (ta’rifini) olasiz.
- Dictionary’da kalitni qidirib, qiymatni olish juda tez – dasturiy ta’minotda ma’lumotga kirishning eng tezkor usullaridan biri.
Array’lar dictionary’larga qaraganda ko‘proq ishlatiladi, chunki ular tartibli – ekranda ma’lumotni ma’lum tartibda ko‘rsatish uchun muhim. Dictionary’lar esa tartibsiz, lekin xavfsizroq – array’da chegaradan tashqari indeksni chaqirsak ilova yiqiladi, dictionary’da esa bunday muammo yo‘q. Keling, kodga o‘tamiz va dictionary yaratamiz!
Yana xush kelibsiz!
Hammaga xush kelibsiz, mening ismim Nik, bu “Swiftful Thinking”. Pleylistning oxiriga yaqinlashdik. O‘tgan videoda array’lar va ozgina set’larni ko‘rdik. Bu videoda dictionary’larga e’tibor qaratamiz – bu ham ma’lumotlar to‘plami.
Yangi fayl yarating: Navigator-da o‘ng tugma bilan bosing, yangi Playground sahifasini yarating va uni “Dictionaries” deb nomlang.
Fon
O‘tgan videodan kod:
var finalFruits: [String] = ["Apple", "Orange", "Banana", "Apple"]
print(finalFruits) // ["Apple", "Orange", "Banana", "Apple"]
var fruitsSet: Set<String> = ["Apple", "Orange", "Banana", "Apple"]
print(fruitsSet) // ["Orange", "Banana", "Apple"] - tartibsiz, takrorlanmaydi
- Array: Tartibli, takroriy elementlarga ruxsat beradi.
- Set: Tartibsiz, unikal elementlar.
Dictionary’lar set’larga yaqin – tartibsiz, lekin kalit-qiymat juftliklari bilan ishlaydi. Kalitlar takrorlanmaydi, qiymatlar esa takrorlanishi mumkin.
Dictionary’lar
let myFirstDictionary: [String: Bool] = [
"Apple": true,
"Orange": false
]
[String: Bool]– dictionary sintaksisi: kalitString, qiymatBool.- Kalit: “Apple”, “Orange”.
- Qiymat:
true,false.
Kalit orqali qiymat olish
let item = myFirstDictionary["Orange"] // false (optional)
print(item) // false
- Array’da
finalFruits[1]indeks bilan chaqirsak, dictionary’da kalit bilan chaqiramiz:["Orange"]. - Qiymat optional – kalit mavjud bo‘lmasa
nilqaytadi.
Xavfsiz kirish
let missingItem = myFirstDictionary["Banana"] // nil
print(missingItem) // nil
- Array’da mavjud bo‘lmagan indeks (masalan,
[10]) ilovani yiqitsa, dictionary’da kalit topilmasanilqaytadi – xavfsiz.
Boshqa misol
var anotherDictionary: [Int: String] = [
0: "Apple",
176: "Banana"
]
let item2 = anotherDictionary[176] // "Banana"
let item3 = anotherDictionary[86] // nil
- Kalit sifatida
Intishlatdik – lekin bu odatiy emas, ko‘pinchaStringishlatiladi.
String kalit bilan:
let dict: [String: String] = [
"abc": "Apple",
"def": "Banana",
"xyz": "Apple"
]
let value = dict["abc"] // "Apple"
- Kalitlar takrorlanmaydi, qiymatlar esa takrorlanishi mumkin.
Kalitlarning o‘ziga xosligi
let invalidDict: [String: String] = [
"abc": "Apple",
"abc": "Mango" // Xato - bir xil kalit
]
- Kalitlar unikal bo‘lishi kerak, aks holda xato.
Element qo‘shish va o‘chirish
Qo‘shish
anotherDictionary["xyz"] = "Mango"
print(anotherDictionary) // [0: "Apple", 176: "Banana", "xyz": "Mango"]
- Kalit-qiymath juftligini qo‘shish – tartib muhim emas.
O‘chirish
anotherDictionary.removeValue(forKey: 176)
print(anotherDictionary) // [0: "Apple", "xyz": "Mango"]
removeValue(forKey:)– kalit orqali qiymatni o‘chiradi.
Tartibsizlik
Dictionary tartibsiz – kalitlar alifbo tartibida yoki yozilgan tartibda chiqmaydi.
Array vs Dictionary
Array:
- Tartibli – ekranda ma’lumotni tartibda ko‘rsatish uchun ideal (masalan, restoranlar ro‘yxati).
- Indekslar mavjud – xavfli, chegaradan tashqari kirish ilovani yiqitadi.
Dictionary:
- Tartibsiz – tartib muhim bo‘lmasa ishlatiladi.
- Kalitlar bilan ishlaydi – tezkor, xavfsiz (optional qaytadi).
- Katta ma’lumotlar uchun, har bir elementning o‘ziga xos kaliti bo‘lsa (masalan, ID).
Maxsus tur bilan dictionary
struct PostModel {
let id: String
let title: String
let likeCount: Int
}
var postArray: [PostModel] = [
PostModel(id: "abc123", title: "Post 1", likeCount: 5),
PostModel(id: "def678", title: "Post 2", likeCount: 10),
PostModel(id: "xyz987", title: "Post 3", likeCount: 15)
]
var postDict: [String: PostModel] = [
"abc123": PostModel(id: "abc123", title: "Post 1", likeCount: 5),
"def678": PostModel(id: "def678", title: "Post 2", likeCount: 10),
"xyz987": PostModel(id: "xyz987", title: "Post 3", likeCount: 15)
]
let myNewItem = postDict["def678"]
print(myNewItem?.title) // "Post 2"
- Array: Tartibli ro‘yxat – indeks bilan kirish.
- Dictionary: Kalit (ID) bilan tezkor kirish.
Xulosa
Array va dictionary’lar turli holatlarda ishlatiladi – biri yaxshiroq deb ayta olmaymiz, har birining o‘z “super kuchi” bor:
- Array: Tartibli, indeksli.
- Dictionary: Tartibsiz, kalitli, tezkor va xavfsiz.
Keyingi videoda for looplarni ko‘ramiz – array, set va dictionary’dagi elementlarni qanday aylanib chiqish va ularga harakat qilishni (masalan, likeCount’ni o‘zgartirish) o‘rganamiz.
Men Nikman, bu “Swiftful Thinking”, keyingi videoda ko‘rishguncha!