Sök…


Anmärkningar

Vissa exempel i det här ämnet kan ha en annan ordning när de används eftersom ordbok inte är garanterad.

Förklarande ordböcker

Ordböcker är en oordnad samling nycklar och värden. Värden avser unika nycklar och måste vara av samma typ.

Vid initialisering av en ordlista är hela syntaxen enligt följande:

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

Även om ett mer kortfattat sätt att initialisera:

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

Förklara en ordlista med nycklar och värden genom att ange dem i en kommaseparerad lista. Typerna kan härledas från typerna av nycklar och värden.

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"]

Ändra ordböcker

Lägg till en nyckel och ett värde i en ordlista

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

updateValue returnerar det ursprungliga värdet om det finns ett eller inte.

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

Ta bort värdet och deras nycklar med liknande syntax

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

Få tillgång till värden

Ett värde i en Dictionary kan nås med dess nyckel:

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

Värdena i en ordlista kan itereras genom att använda values :

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

På liknande sätt kan nycklarna i en ordlista itereras genom att använda dess keys :

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

För att få alla key och value motsvarar varandra (du kommer inte i ordentlig ordning eftersom det är en ordlista)

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

Observera att en Dictionary , till skillnad från en Array , i sig inte är ordnad - det vill säga, det finns ingen garanti för ordningen under iteration.

Om du vill komma åt flera nivåer i en ordlista använder du en upprepad syntax för prenumerationen.

// 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"

Ändra värde på ordlistan med nyckel

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

Hämta alla nycklar i ordlistan

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

Slå samman två ordböcker

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow