Swift - Sözlükler

Swift 4 dictionariesaynı tipteki sırasız değer listelerini saklamak için kullanılır. Swift 4, bir sözlüğe yanlışlıkla bile yanlış bir tür girmenize izin vermeyen katı bir kontrol koyar.

Swift 4 sözlükleri, keydaha sonra başvurulabilecek ve aynı anahtarla aranabilecek bir değeri saklamak için. Bir dizideki öğelerin aksine, bir dizideki öğelerdictionarybelirli bir sipariş yok. Kullanabilirsindictionary tanımlayıcılarına göre değerleri aramanız gerektiğinde.

Bir sözlük anahtarı bir tamsayı veya sınırlaması olmayan bir dize olabilir, ancak bir sözlük içinde benzersiz olmalıdır.

Oluşturulan bir sözlüğü bir değişkene atarsanız, o zaman her zaman değiştirilebilir, yani onu öğeleri ekleyerek, kaldırarak veya değiştirerek değiştirebilirsiniz. Ancak bir sözlüğü bir sabite atarsanız, bu sözlük değişmezdir ve boyutu ve içeriği değiştirilemez.

Sözlük Oluşturma

Aşağıdaki başlatıcı sözdizimini kullanarak belirli bir türde boş bir sözlük oluşturabilirsiniz -

var someDict = [KeyType: ValueType]()

Anahtarı Int türünde olacak ve ilişkili değerler dizeler olacak boş bir sözlük oluşturmak için aşağıdaki basit sözdizimini kullanabilirsiniz -

var someDict = [Int: String]()

Verilen bir değer kümesinden bir sözlük oluşturmak için bir örnek:

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

Sıraya Dayalı Başlatma

Swift 4, dizilerden Sözlük oluşturmanıza izin verir (Anahtar-Değer Çiftleri.)

var cities = [“Delhi”,”Bangalore”,”Hyderabad”]

Anahtarı Int türünde olacak ve ilişkili değerler dizeler olacak boş bir sözlük oluşturmak için aşağıdaki basit sözdizimini kullanabilirsiniz -

var Distance = [2000,10, 620]

Verilen bir değer kümesinden bir sözlük oluşturmak için bir örnek:

let cityDistanceDict = Dictionary(uniqueKeysWithValues: zip(cities, Distance))

Yukarıdaki kod satırları, anahtar olarak Şehirler ve Değer olarak Mesafe ile bir sözlük oluşturacaktır -

Filtreleme

Swift 4, bir sözlükten değerleri filtrelemenize izin verir.

var closeCities = cityDistanceDict.filter { $0.value < 1000 }

Yukarıdaki kodu çalıştırırsak closeCities Sözlüğümüz olacaktır.

["Bangalore" : 10 , "Hyderabad" : 620]

Sözlük Gruplaması

Swift 4, Sözlük değerlerinin gruplandırılmasına izin verir.

var cities = ["Delhi","Bangalore","Hyderabad","Dehradun","Bihar"]

Sözlüğün değerlerini birinci alfabeye göre gruplamak için aşağıdaki basit sözdizimini kullanabilirsiniz.

var GroupedCities = Dictionary(grouping: cities ) { $0.first! }

Yukarıdaki kodun sonucu olacaktır

["D" :["Delhi","Dehradun"], "B" : ["Bengaluru","Bihar"], "H" : ["Hyderabad"]]

Sözlüklere Erişim

Alt simge sözdizimini kullanarak, sözlükten bir değer elde edebilirsiniz, almak istediğiniz değerin anahtarını köşeli parantez içinde sözlüğün adından hemen sonra aşağıdaki gibi iletebilirsiniz -

var someVar = someDict[key]

Bir sözlükten değerler oluşturmak, başlatmak ve bunlara erişmek için aşağıdaki örneği kontrol edelim -

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var someVar = someDict[1]

print( "Value of key = 1 is \(someVar)" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

Value of key = 1 is Optional("One")
Value of key = 2 is Optional("Two")
Value of key = 3 is Optional("Three")

Sözlükleri Değiştirme

Kullanabilirsiniz updateValue(forKey:)sözlüğün belirli bir anahtarına mevcut bir değeri ekleme yöntemi. Bu yöntem, sözlüğün değer türünün isteğe bağlı bir değerini döndürür. İşte basit bir örnek -

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var oldVal = someDict.updateValue("New value of one", forKey: 1)
var someVar = someDict[1]

print( "Old value of key = 1 is \(oldVal)" )
print( "Value of key = 1 is \(someVar)" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

Old value of key = 1 is Optional("One")
Value of key = 1 is Optional("New value of one")
Value of key = 2 is Optional("Two")
Value of key = 3 is Optional("Three")

Aşağıdaki örnekte gösterildiği gibi, belirli bir tuşa yeni bir değer atayarak sözlüğün mevcut bir öğesini değiştirebilirsiniz -

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var oldVal = someDict[1]
someDict[1] = "New value of one"
var someVar = someDict[1]

print( "Old value of key = 1 is \(oldVal)" )
print( "Value of key = 1 is \(someVar)" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

Old value of key = 1 is Optional("One")
Value of key = 1 is Optional("New value of one")
Value of key = 2 is Optional("Two")
Value of key = 3 is Optional("Three")

Anahtar / Değer Çiftlerini Kaldır

Kullanabilirsiniz removeValueForKey()sözlükten anahtar / değer çiftini kaldırma yöntemi. Bu yöntem, varsa anahtar / değer çiftini kaldırır ve kaldırılan değeri döndürür veya değer yoksa nil değerini döndürür. İşte basit bir örnek -

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var removedValue = someDict.removeValue(forKey: 2)

print( "Value of key = 1 is \(someDict[1])" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

Value of key = 1 is Optional("One")
Value of key = 2 is nil
Value of key = 3 is Optional("Three")

Ayrıca, bir anahtar / değer çiftini sözlükten bir değer atayarak kaldırmak için alt simge sözdizimini de kullanabilirsiniz. nilbu anahtar için. İşte basit bir örnek -

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

someDict[2] = nil

print( "Value of key = 1 is \(someDict[1])" )
print( "Value of key = 2 is \(someDict[2])" )
print( "Value of key = 3 is \(someDict[3])" )

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

Value of key = 1 is Optional("One")
Value of key = 2 is nil
Value of key = 3 is Optional("Three")

Sözlük Üzerinde Yineleme

Kullanabilirsin for-in Aşağıdaki örnekte gösterildiği gibi, bir Sözlük'teki tüm anahtar-değer çiftleri kümesi üzerinde yineleme yapmak için döngü yapın -

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

for (index, keyValue) in someDict.enumerated() {
   print("Dictionary key \(index) - Dictionary value \(keyValue)")
}

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

Dictionary key 2 - Dictionary value Two
Dictionary key 3 - Dictionary value Three
Dictionary key 1 - Dictionary value One

Kullanabilirsiniz enumerate() Aşağıdaki örnekte gösterildiği gibi öğenin (anahtar, değer) çiftiyle birlikte dizinini döndüren işlev -

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
for (key, value) in someDict.enumerated() {
   print("Dictionary key \(key) - Dictionary value \(value)")
}

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

Dictionary key 0 - Dictionary value (key: 2, value: "Two")
Dictionary key 1 - Dictionary value (key: 3, value: "Three")
Dictionary key 2 - Dictionary value (key: 1, value: "One")

Dizilere Dönüştür

Hem anahtarlar hem de değerler için ayrı diziler oluşturmak üzere belirli bir sözlükten anahtar-değer çiftlerinin bir listesini çıkarabilirsiniz. İşte bir örnek -

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]

let dictKeys = [Int](someDict.keys)
let dictValues = [String](someDict.values)

print("Print Dictionary Keys")

for (key) in dictKeys {
   print("\(key)")
}
print("Print Dictionary Values")

for (value) in dictValues {
   print("\(value)")
}

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

Print Dictionary Keys
2
3
1
Print Dictionary Values
Two
Three
One

Count özelliği

Salt okunur kullanabilirsiniz count bir sözlüğün özelliği, bir sözlükteki öğe sayısını aşağıda gösterildiği gibi bulmak için -

var someDict1:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var someDict2:[Int:String] = [4:"Four", 5:"Five"]

print("Total items in someDict1 = \(someDict1.count)")
print("Total items in someDict2 = \(someDict2.count)")

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

Total items in someDict1 = 3
Total items in someDict2 = 2

Boş Mülkiyet

Salt okunur kullanabilirsiniz empty bir sözlüğün özelliği, aşağıda gösterildiği gibi bir sözlüğün boş olup olmadığını anlamak için -

var someDict1:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
var someDict2:[Int:String] = [4:"Four", 5:"Five"]
var someDict3:[Int:String] = [Int:String]()

print("someDict1 = \(someDict1.isEmpty)")
print("someDict2 = \(someDict2.isEmpty)")
print("someDict3 = \(someDict3.isEmpty)")

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

someDict1 = false
someDict2 = false
someDict3 = true