Szukaj…


Uwagi

Niektóre przykłady w tym temacie mogą mieć inną kolejność, gdy są używane, ponieważ kolejność słownika nie jest gwarantowana.

Deklarowanie słowników

Słowniki to nieuporządkowany zbiór kluczy i wartości. Wartości odnoszą się do unikalnych kluczy i muszą być tego samego typu.

Podczas inicjowania słownika pełna składnia jest następująca:

var books : Dictionary<Int, String> = Dictionary<Int, String>()

Chociaż bardziej zwięzły sposób inicjowania:

var books = [Int: String]()
// or
var books: [Int: String] = [:]

Zadeklaruj słownik za pomocą kluczy i wartości, określając je na liście oddzielonej przecinkami. Typy można wywnioskować na podstawie typów kluczy i wartości.

var books: [Int: String] = [1: "Book 1", 2: "Book 2"]
//books = [2: "Book 2", 1: "Book 1"] 
var otherBooks = [3: "Book 3", 4: "Book 4"]
//otherBooks = [3: "Book 3", 4: "Book 4"]

Modyfikowanie słowników

Dodaj klucz i wartość do słownika

var books = [Int: String]()
//books = [:]
books[5] = "Book 5"
//books = [5: "Book 5"]
books.updateValue("Book 6", forKey: 5)
//[5: "Book 6"]

updateValue zwraca oryginalną wartość, jeśli istnieje lub jest zerowa.

let previousValue = books.updateValue("Book 7", forKey: 5)
//books = [5: "Book 7"]
//previousValue = "Book 6"

Usuń wartość i ich klucze o podobnej składni

books[5] = nil
//books [:]
books[6] = "Deleting from Dictionaries"
//books = [6: "Deleting from Dictionaries"]
let removedBook = books.removeValueForKey(6)
//books = [:]
//removedValue = "Deleting from Dictionaries"

Dostęp do wartości

Dostęp do wartości w Dictionary można uzyskać za pomocą jej klucza:

var books: [Int: String] = [1: "Book 1", 2: "Book 2"]
let bookName = books[1]
//bookName = "Book 1"

Wartości słownika można iterować za pomocą właściwości values :

for book in books.values {
    print("Book Title: \(book)")
}
//output: Book Title: Book 2
//output: Book Title: Book 1

Podobnie, klucze słownika można iterować za pomocą jego właściwości keys :

for bookNumbers in books.keys {
    print("Book number: \(bookNumber)")
}
// outputs:
// Book number: 1
// Book number: 2

Aby uzyskać wszystkie pary key i value odpowiadające sobie nawzajem (nie będziesz w odpowiedniej kolejności, ponieważ jest to Słownik)

for (book,bookNumbers)in books{
print("\(book)  \(bookNumbers)")
}
// outputs:
// 2  Book 2
// 1  Book 1

Zauważ, że Dictionary , w przeciwieństwie do Array , jest z natury nieuporządkowany - to znaczy, że nie ma gwarancji kolejności podczas iteracji.

Jeśli chcesz uzyskać dostęp do wielu poziomów słownika, użyj powtarzalnej składni indeksu dolnego.

// Create a multilevel dictionary.
var myDictionary: [String:[Int:String]]! = ["Toys":[1:"Car",2:"Truck"],"Interests":[1:"Science",2:"Math"]]

print(myDictionary["Toys"][2]) // Outputs "Truck"
print(myDictionary["Interests"][1]) // Outputs "Science"

Zmień wartość słownika za pomocą klucza

var dict = ["name": "John", "surname": "Doe"]
// Set the element with key: 'name' to 'Jane'
dict["name"] = "Jane"
print(dict)

Zdobądź wszystkie klucze w Słowniku

let myAllKeys = ["name" : "Kirit" , "surname" : "Modi"]
let allKeys = Array(myAllKeys.keys)
print(allKeys)

Połącz dwa słowniki

extension Dictionary {
    func merge(dict: Dictionary<Key,Value>) -> Dictionary<Key,Value> {
        var mutableCopy = self
        for (key, value) in dict {
            // If both dictionaries have a value for same key, the value of the other dictionary is used.
            mutableCopy[key] = value
        }
        return mutableCopy
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow