Samlingar
Samlingar
Samlingar är en gratis lektion i Swift Academy på CoddyKit. Detta är lektion 1 av 1. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Swift Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Swift Academy innehåller totalt 1 lektioner.
Introduktion
Hej!
I den här lektionen lär vi oss om collection-typer i Swift, som är ett av de viktigaste ämnesområdena.
Vi börjar.
Det finns tre collection-typer i Swift.
Array → Sekventiella samlingstyper.
Set → Oordnade samlingstyper med unika värden.
Dictionary → Oordnade samlingstyper med nyckel–värde-par.
Föränderlig – oföränderlig
Om våra samlingstyper är oföränderliga eller föränderliga avgörs av hur vi definierar dem.
Om vi definierar en samling med en let-sats är den oföränderlig, medan den är föränderlig om vi definierar den med var.
Om det definierade värdet inte ska ändras senare ger användning av let kompilatorn en prestandafördel genom att koden kan köras mer optimerat.
Array
Array är den samlingstyp som används för att lagra data sekventiellt. Sedan Swift 3 behöver inte alla element i en Array vara av samma typ.
Syntaxen för en enkel Array-definition visas i exemplet nedan.
// Let's create an empty array.
var someInts = [Int]()
print("someInts is of type [Int] with \(someInts.count) items.")
// Prints "someInts is of type [Int] with 0 items."Skapa en array med ett standardvärde
I vissa fall kan vi vilja skapa en array med ett standardvärde och en bestämd storlek. Då måste vi skicka två argument till Array-konstruktorn.
Argumenten anger vilket standardvärdet är och hur många element arrayen ska innehålla.
var threeDoubles = Array(repeating: 0.0, count: 3)
print(threeDoubles)
// threeDoubles is of type [Double], and equals [0.0, 0.0, 0.0]
var anotherThreeDoubles = Array(repeating: 2.5, count: 3)
// anotherThreeDoubles is of type [Double], and equals [2.5, 2.5, 2.5]
print(anotherThreeDoubles)
var sixDoubles = threeDoubles + anotherThreeDoubles
print(sixDoubles)
// sixDoubles is inferred as [Double], and equals [0.0, 0.0, 0.0, 2.5, 2.5, 2.5]Skapa en Array med en Array Literal
I det föregående exemplet lärde vi oss att skapa en tom Array. I vissa fall kanske vi dock vill skapa en Array med en Array Literal.
Vi lär oss hur den används i exemplet.
/*
We have defined a variable named catList,
and with the [String] statement we specified
that its type is an Array containing String elements.
*/
var catList: [String] = ["Garfield", "Tom"]
print(catList)
/*
It will understand that the array is an Array containing
String statements, since we assign a value that
defines the variable. (Swift type inference)
*/
var shoppingList = ["Eggs", "Milk"]
print(shoppingList)Åtkomst till ett värde i en Array
När vi vill nå ett element på ett visst index i en sekvens räcker det att använda följande syntax.
myArray [index]
Vi tittar på exemplet.
// We have defined an array with 3 elements of type Int.
var numbers:[Int] = [1, 5, 21]
// Arrays start from Index 0. For example, in order to reach the value 5, which is the 2nd element, we need to access the 1st index.
var a = numbers[1]
print( "Value of numbers at index 1 is \(a)" )Lägga till nya element i en Array
Vi kan lägga till ett nytt element i en Array.
I exemplet nedan definieras en Array med namnet catList. I nästa steg har ett nytt element lagts till i denna Array med metoden append.
// The Array named catList was defined with 1 initial element.
var catList = ["Tom"]
/*
We are adding a new item with a Garfield
value using the append method.
*/
catList.append("Garfield")
// Our array will now have 2 elements.
/*
With the + = operator, we can do the
work that the append method does.
*/
catList += ["Sylvester"]
Lägga till data på ett visst index i en Array
Värdet som jag lade till med metoden append i det föregående exemplet läggs till sist i Array. Ibland kanske vi dock vill lägga till det på ett visst index. Då använder vi metoden insert.
Syntaxen ser ut så här.
myArr.insert ("The data to add", at: index);
Vi tar reda på det med ett exempel.
var catList = ["Tom"]
catList.insert("Garfield", at: 1)
print(catList)
Ta bort ett visst element i en Array
Metoden remove används för att ta bort ett element på ett visst index i en Array.
var shoppingList = ["Apple", "Cherry", "Cheese"]
let shoppingListOne = shoppingList.remove(at: 0)
// the item that was at index 0 has just been removed
// the mapleSyrup constant is now equal to the removed "Maple Syrup" string
let shoppingListTwo = shoppingList.removeLast()
// the last item in the array has just been removed
print(shoppingListTwo)Iteration över en array
Vi kan iterera över en array med for-in.
Låt oss titta på exemplet.
var shoppingList = ["Banana", "Orange", "Milk"]
for item in shoppingList {
print(item)
}
// Six eggs
// Milk
// Flour
// Baking Powder
// Bananas
for (index, value) in shoppingList.enumerated() {
print("Item \(index + 1): \(value)")
}
// Item 1: Six eggs
// Item 2: Milk
// Item 3: Flour
// Item 4: Baking Powder
// Item 5: Bananas
Mängder
Används för att hålla samlingar av samma typ tillsammans utan inbördes ordning.
Som namnet antyder är de mängder. Det kan inte finnas två element med samma värde i mängden.
Skapa en tom mängd
Vi använder följande exempel för att skapa en tom mängd.
var catSet = Set<Character>()Skapa mängder med en arrayliteral
En arrayliteral kan användas för att skapa en mängd. Observera att även om värdet som tilldelas här ser ut som en array, är variabeltypen Set <String>.
var favoriteGenres: Set<String> = ["Rock", "Classical", "Hip hop"]Varning
När en arrayliteral används går det inte att skapa en mängd utan att definiera en typ. Det kan förväxlas med en Array. Därför måste vi definiera typen.
Åtminstone bör vi använda den på följande sätt.
var favoriteGenres: Set = ["Rock", "Classical", "Hip hop"]Set-metoder
Låt oss titta på exemplet
var favoriteGenres = ["Funk"]
print("I have \(favoriteGenres.count) favorite music genres.")
if favoriteGenres.isEmpty {
print("favoriteGenres is empty")
} else {
print("I have particular music preferences.")
}
if favoriteGenres.contains("Funk") {
print("Funk")
} Iterera över en mängd
Swift-typen Set har ingen ordning. När man itererar över ett Set-värde kan man dock använda metoden sorted. Denna metod omvandlar mängdens element till en array.
let favoriteGenres = ["Classical","Jazz", "Hip hop"]
for genre in favoriteGenres {
print("\(genre)")
}
// Classical
// Jazz
// Hip hopDictionary
Dictionary är en samlingstyp som lagrar värden som nyckel-värde-par och inte har någon ordning.
Varje värde lagras med en unik nyckel. Den representerar värdets ID i dictionaryn. Den innehåller inte någon sekvens, till skillnad från arrayer. Vi kan tänka på den som en ordbok i verkligheten.
Därför är varje värdes identitet viktigare än ordningen.
Dictionary-typen kan definieras med kortformen [Key: Value]. Kortformen används oftare.
var namesOfIntegers = [Int: String]()
// namesOfIntegers is an empty [Int: String] dictionary
namesOfIntegers[16] = "sixteen"
// namesOfIntegers now contains 1 key-value pair
namesOfIntegers = [:]
// namesOfIntegers is once again an empty dictionary of type [Int: String]Metoder för att komma åt en dictionary
Vi kan ta reda på hur många element en dictionary innehåller med metoden count.
Dessutom kan vi kontrollera om dictionaryn är tom med metoden isEmpty.
Låt oss göra några exempel med dessa metoder.
var airports = ["LHR": "London", "IST": "Istanbul"]
print("The airports dictionary contains \(airports.count) items.")
// Prints "The airports dictionary contains 2 items."
if airports.isEmpty {
print("The airports dictionary is empty.")
} else {
print("The airports dictionary is not empty.")
}
// Prints "The airports dictionary is not empty."
airports["LHR"] = "London"
// the airports dictionary now contains 3 itemsSubscript
Så här hämtar man ett värde med subscript. Resultatet returneras som ett optional.
var airports = ["DUB":"Dublin"]
if let airportName = airports["DUB"] {
print("The name of the airport is \(airportName).")
} else {
print("That airport is not in the airports dictionary.")
}
// Prints "The name of the airport is Dublin Airport."
//Deletion
airports["APL"] = nil
if let removedValue = airports.removeValue(forKey: "DUB") {
print("The removed airport's name is \(removedValue).")
} else {
print("The airports dictionary does not contain a value for DUB.")
}
// Prints "The removed airport's name is Dublin Airport."
Uppdatera en dictionary
Förutom att använda subscriptet ovan finns det en metod för att uppdatera dictionaryn.
Det speciella med den här metoden är att den, efter uppdateringen, returnerar det gamla värdet.
var airports = ["DUB": "Dublin"]
if let oldValue = airports.updateValue("Dublin Airport", forKey: "DUB") {
print("The old value for DUB was \(oldValue).")
}
// Prints "The old value for DUB was Dublin."
Ett exempel på hur man konverterar från Dictionary till Array finns nedan
Ett exempel på hur man konverterar från Dictionary till Array finns nedan.
let airports = ["IST":"Istanbul Airport", "DUB":"Dublin Airport"]
let airportCodes = [String](airports.keys)
print(airportCodes)
let airportNames = [String](airports.values)
print(airportNames)Grattis
Grattis 🎉
I den här lektionen lärde vi oss hur Collections används i Swift.
Vi ses i nästa lektion.

Lär dig Swift med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 122
- Lektioner
- 409
Vanliga frågor
Är lektionen ”Samlingar” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Swift Academy, inklusive ”Samlingar”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Swift Academy innehåller totalt 1 lektioner.
Vad lär jag mig i ”Samlingar”?
Samlingar Ni övar på Swift Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Swift Academy?
Du behöver inga förkunskaper. Utbildningen i Swift Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 1.
Hur lång tid tar lektionen ”Samlingar”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Swift Academy-lektionen?
Ja. Varje Swift Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.