Woordenlijst

Een overzicht van veelgebruikte Swift en SwiftUI begrippen, uitgelegd in het Nederlands.


@Bindable

Maakt het mogelijk om een @Observable-object via een Binding door te geven aan views die twee-weg bewerkingen nodig hebben, zoals een TextField of Picker.

@Bindable var manager: EnergyDataManager
TextField("Naam", text: $manager.naam)

Apple documentatie


@Environment

Geeft een view toegang tot een object dat hoger in de view-boom is aangemaakt, zonder dat je het steeds zelf moet doorgeven.

@Environment(EnergyDataManager.self) var manager

Apple documentatie


@MainActor

Zorgt dat code altijd op de hoofdthread (main thread) wordt uitgevoerd. Nodig voor alle UI-updates.

@MainActor
@Observable
class EnergyDataManager { }

Apple documentatie


@Observable

Markeert een klasse zodat SwiftUI automatisch de interface vernieuwt als een eigenschap verandert.

@Observable
class Teller {
    var aantal = 0
}

Apple documentatie


@State

Slaat een waarde op binnen een view. Als de waarde verandert, tekent SwiftUI de view opnieuw.

@State private var naam = "wereld"

Apple documentatie


App Group

Gedeelde opslagruimte tussen de app en een widget (of andere extensions). Beide gebruiken dezelfde suiteName om data uit te wisselen via UserDefaults.

UserDefaults(suiteName: "group.bnelissen.EnergyClock")

Apple documentatie


App Sandbox

Een beveiligde omgeving die verhindert dat een app buiten zijn eigen bestanden kan. Verplicht voor de Mac App Store. Entitlements vormen uitzonderingen op deze sandbox.

Apple documentatie


Archive

Een definitieve, gesigneerde versie van je app klaar voor distributie. Gemaakt via Product > Archive in Xcode. Wordt geüpload naar App Store Connect.

Apple documentatie


async / await

Voert code uit die even moet wachten (bijvoorbeeld een netwerkaanroep) zonder de rest van de app te blokkeren.

func haalDataOp() async {
    let data = await laadVanServer()
}

Apple documentatie


Binding

Een twee-weg verbinding naar een waarde. Een view kan de waarde lezen én wijzigen. Aangemaakt met het $-teken voor een @State- of @Bindable-eigenschap.

TextField("Naam", text: $naam)

Apple documentatie


Bool

Een waarde die alleen true (waar) of false (niet waar) kan zijn. Vernoemd naar de wiskundige George Boole (1815–1864), die de logica van waar en niet-waar als wiskundig systeem beschreef.

var isKlaar: Bool = true
var heeftGewonnen = false

Apple documentatie


Breakpoint

Een markering in de code die Xcode vertelt om daar te pauzeren tijdens het draaien van de app. Klik op een regelnummer in Xcode om er een te plaatsen.

Apple documentatie


Bundle ID

De unieke identifier van je app in het Apple-ecosysteem, in omgekeerde domeinnaam-notatie.

nl.jouwnaam.energyclock

Apple documentatie


camelCase

Een schrijfwijze voor namen zonder spaties: het eerste woord begint met een kleine letter, elk volgend woord begint met een hoofdletter. Zo wordt “maximale score” maximaleScore. De naam komt van de kameel — de hoofdletters in het midden zijn de bulten. Swift gebruikt camelCase voor variabelen, constanten en functies.


Canvas

Een view waarmee je zelf kunt tekenen: lijnen, cirkels, tekst — alles wat je wilt.

Canvas { context, size in
    context.fill(Circle().path(in: CGRect(origin: .zero, size: size)), with: .color(.blue))
}

Apple documentatie


Commentaar

Tekst in de code die Swift negeert. Je schrijft het voor jezelf of voor anderen die de code lezen. Swift kent drie soorten:

Soort Gebruik
// Alles op de regel na de twee schuine strepen
/* ... */ Alles tussen de tekens, ook over meerdere regels
/// Documentatiecommentaar voor functies en types (gebruikt Xcode voor ingebouwde hulp)

In dit boek gebruiken we // Uitvoer: ... om te laten zien wat je op het scherm verwacht te zien.

// Dit is een commentaarregel
var naam = "Pim"  // je kunt commentaar ook achter code zetten

/*
  Dit commentaar
  loopt over meerdere regels.
*/

class

Een referentietype dat, net als een struct, eigenschappen en methoden heeft — maar je kunt het doorgeven door te verwijzen. Twee variabelen kunnen naar hetzelfde object wijzen.

class Klok {
    var uur = 0
}

Swift documentatie


Compileren

Het omzetten van Swift-code naar een taal die de processor van je Mac begrijpt. Xcode doet dit automatisch als je op de play-knop drukt. Tijdens het compileren controleert Swift ook of alle types kloppen — fouten die dan gevonden worden heten compile-time errors.

Codable

Een protocol dat aangeeft dat een type omgezet kan worden van en naar JSON (of andere formaten). Combineert Encodable en Decodable.

struct Prijs: Codable {
    var uur: Int
    var bedrag: Double
}

Apple documentatie


Color

Vertegenwoordigt een kleur in SwiftUI.

Color.green
Color(.red)
Color(red: 0.2, green: 0.5, blue: 0.8)

Apple documentatie


CommandGroup

Voegt menu-items toe aan het macOS-applicatiemenu op een specifieke plek.

CommandGroup(after: .windowArrangement) {
    Button("Open venster") { openWindow(id: "info") }
}

Apple documentatie


ContentUnavailableView

Toont een nette lege-staat-weergave wanneer er geen inhoud is om te tonen.

ContentUnavailableView("Geen data", systemImage: "clock")

Apple documentatie


do / try / catch

Structuur om fouten op te vangen. try markeert aanroepen die kunnen mislukken, catch vangt de fout op.

do {
    let data = try laadBestand()
} catch {
    print("Fout: \(error)")
}

Swift documentatie


Double

Een getal met decimalen. De naam staat voor double precision (dubbele precisie): Swift slaat het getal op met meer nauwkeurigheid dan een gewoon getal.

var temperatuur: Double = 36.6
var prijs = 2.49

Apple documentatie


enum

Een type met een vaste lijst van mogelijke waarden.

enum Kleur {
    case groen
    case geel
    case rood
}

Swift documentatie


Entitlement

Een toestemming die aangeeft wat een macOS-app mag doen buiten zijn sandbox (netwerk, App Groups, push-notificaties).

Apple documentatie


ForEach

Herhaalt een view voor elk item in een lijst.

ForEach(uren, id: \.self) { uur in
    Text("\(uur):00")
}

Apple documentatie


Form

Een container voor invoerelementen zoals TextField, Picker, Toggle en Stepper. In macOS maakt het automatisch geschikte opmaak aan.

Form {
    Section("Weergave") {
        Toggle("Donkere modus", isOn: $donker)
    }
}

Apple documentatie


func

Definieert een functie: een blok code met een naam dat je steeds opnieuw kunt aanroepen.

func groet(naam: String) -> String {
    return "Hallo, \(naam)!"
}

Swift documentatie


Gatekeeper

macOS-beveiligingssysteem dat controleert of een app is ondertekend door een bekende ontwikkelaar voordat hij wordt geopend.

Apple documentatie


Identifiable

Een protocol dat aangeeft dat elk element in een lijst een unieke id heeft, zodat SwiftUI weet welk item welk is.

struct Prijs: Identifiable {
    let id = UUID()
    var bedrag: Double
}

Apple documentatie


IDE

Een Integrated Development Environment — een programma dat alles wat je nodig hebt om software te schrijven op één plek samenbrengt: een code-editor, een manier om je app te starten en testen, en hulp bij het opsporen van fouten. In dit boek is Xcode de IDE.

Apple documentatie


Int

Een heel getal zonder decimalen. Afkorting van het Latijnse integer, dat “heel” of “ongedeeld” betekent.

var leeftijd: Int = 9
var score = 42

Apple documentatie


ImageRenderer

Zet een SwiftUI-view om naar een afbeelding (NSImage of UIImage). Handig voor het exporteren van het app-icoon.

let renderer = ImageRenderer(content: AppIconView())
renderer.scale = 2.0
let afbeelding = renderer.nsImage

Apple documentatie


JSONDecoder

Zet JSON-data om naar Swift-structs of -klassen die Decodable zijn.

let prijs = try JSONDecoder().decode(Prijs.self, from: jsonData)

Apple documentatie


JSONEncoder

Zet Swift-structs of -klassen die Encodable zijn om naar JSON-data.

let data = try JSONEncoder().encode(prijs)

Apple documentatie


keyboardShortcut

Voegt een sneltoets toe aan een knop of menu-item.

Button("Venster") { openWindow(id: "klok") }
    .keyboardShortcut("1", modifiers: .command)

Apple documentatie


LazyVStack / LazyHStack

Een stapelview die elementen pas aanmaakt als ze zichtbaar worden. Efficiënter dan een gewone VStack bij lange lijsten.

ScrollView {
    LazyVStack {
        ForEach(items) { item in ItemView(item: item) }
    }
}

Apple documentatie


List

Een scrollbare lijst van rijen, geoptimaliseerd voor macOS/iOS. Ondersteunt selectie, swipe-acties en secties.

List(prijzen) { prijs in
    Text("\(prijs.uur):00 – €\(prijs.bedrag, specifier: "%.2f")")
}

Apple documentatie


Logger (os.Logger)

Professionele logging met niveaus (debug, info, warning, error) en filters op subsysteem en categorie. Logs zijn zichtbaar in Console.app.

import os
let logger = Logger(subsystem: "bnelissen.EnergyClock", category: "netwerk")
logger.info("Prijzen geladen: \(aantal, privacy: .public)")

Apple documentatie


onChange

Voert code uit wanneer een waarde verandert.

.onChange(of: bron) { _, nieuw in
    manager.wisselBron(naar: nieuw)
}

Apple documentatie


Optional

Een waarde die er wel of niet kan zijn. Geschreven als Type?. Je moet altijd controleren of er een waarde is voordat je hem gebruikt.

var prijs: Double? = nil
if let p = prijs {
    print("Prijs is \(p)")
}

Swift documentatie


Path

Een beschrijving van een vorm of lijn die je kunt tekenen in een Canvas. Bestaat uit lijnsegmenten en bogen.

var pad = Path()
pad.addArc(center: midden, radius: 50, startAngle: .degrees(0), endAngle: .degrees(180), clockwise: false)

Apple documentatie


print()

Toont een waarde op het scherm. Vroeger werden deze teksten op een papieren rol geprint. Nu zie je ze onderaan in Xcode.

print("Hallo, wereld!")
print(leeftijd)

Apple documentatie


Picker

Een keuzelijst waarmee de gebruiker een waarde kan selecteren.

Picker("Bron", selection: $bron) {
    ForEach(Bron.allCases) { b in Text(b.naam).tag(b) }
}

Apple documentatie


Privacy Manifest

Een bestand (PrivacyInfo.xcprivacy) dat beschrijft welke systeem-API’s je app gebruikt en waarom. Verplicht voor de App Store sinds 2024.

Apple documentatie


Scene

Een zelfstandig onderdeel van een SwiftUI-app dat zijn eigen venster(s) beheert. Voorbeelden: WindowGroup, Window, Settings.

Apple documentatie


ScrollView

Maakt een view scrollbaar als de inhoud groter is dan het scherm.

ScrollView {
    VStack { /* lange inhoud */ }
}

Apple documentatie


Semantic Versioning

Een versieschema met drie getallen: MAJOR.MINOR.PATCH. MAJOR voor grote wijzigingen, MINOR voor nieuwe functies, PATCH voor bugfixes.

1.0.0  → eerste release
1.0.1  → kleine bugfix
1.1.0  → nieuwe functie
2.0.0  → grote herziening

Swift Evolution documentatie


Settings

Een speciale Scene in SwiftUI die het instellingenvenster van een macOS-app beheert. Wordt automatisch geopend met Cmd+,.

Settings {
    InstellingenView()
}

Apple documentatie


Stepper

Een besturingselement waarmee de gebruiker een getal kan ophogen of verlagen.

Stepper("Uren: \(uren)", value: $uren, in: 1...24)

Apple documentatie


struct

Een gegevenstype dat je zelf definieert. Een struct is als een recept: het beschrijft hoe iets eruitziet, maar is zelf nog geen gebakken brood.

struct Prijs {
    var uur: Int
    var bedrag: Double
}

Swift documentatie


Swift

Programmeertaal geïntroduceerd door Apple in 2014, sindsdien open source. De naam is Engels voor snel — de taal is ontworpen om snel en veilig te zijn. Het logo is een gierzwaluw, een vogel die bekendstaat als een van de snelste ter wereld.


SwiftUI

Het framework van Apple waarmee je de interface van een app bouwt. Met SwiftUI beschrijf je hoe je app eruitziet — knoppen, teksten, lijsten — en Apple zorgt dat het er goed uitziet. SwiftUI werkt op Mac, iPhone, iPad en meer.


String

Een stuk tekst. De naam komt van het Engelse string, dat “reeks” of “draad” betekent — een reeks tekens achter elkaar geregen.

var naam: String = "Emma"
var boodschap = "Hallo, wereld!"

Apple documentatie


Tab / TabView

Toont meerdere schermen met tabbladen. In iOS standaard onderin, in macOS als tabbladen bovenin.

TabView {
    Tab("Klok", systemImage: "clock") { KlokView() }
    Tab("Lijst", systemImage: "list.bullet") { LijstView() }
}

Apple documentatie


task

Een view-modifier die een async-functie uitvoert zodra de view verschijnt.

.task {
    await manager.laadPrijzen()
}

Apple documentatie


TestFlight

Apples platform voor bètatesten. Hiermee kun je je app naar testrs sturen vóórdat hij in de App Store staat.

Apple documentatie


Text

Een SwiftUI-view die een stuk tekst toont op het scherm.

Text("Hallo, wereld!")

Apple documentatie


TimelineEntry / TimelineProvider

WidgetKit-protocollen voor het leveren van een tijdlijn van momenten waarop de widget wordt bijgewerkt.

struct MijnEntry: TimelineEntry {
    let date: Date
}

Apple documentatie


Toewijzen

Een waarde koppelen aan een variabele of constante. Het = teken is het toewijzingsteken.

var naam = "Pim"   // toewijzing: "Pim" wordt toegewezen aan naam
let leeftijd = 9   // ook een toewijzing, maar dan met let

Toggle

Een schakelaar waarmee de gebruiker iets aan of uit kan zetten.

Toggle("Donkere modus", isOn: $donkereModus)

Apple documentatie


Type-inferentie

Swift kijkt naar de waarde die je invult en bepaalt zelf welk type het is. Schrijf je var leeftijd = 9, dan ziet Swift een heel getal en kiest automatisch Int. Je hoeft het type niet zelf op te schrijven.

var leeftijd = 9        // Swift kiest Int
var naam = "Pim"        // Swift kiest String
var temperatuur = 36.6  // Swift kiest Double

URLSession

Het netwerk-framework van Apple. Gebruikt async/await voor het ophalen van data van internet.

let (data, _) = try await URLSession.shared.data(from: url)

Apple documentatie


UserDefaults

Slaat kleine hoeveelheden gegevens op die bewaard blijven als de app wordt afgesloten — zoals een brievenbus die altijd op je staat te wachten.

UserDefaults.standard.set(true, forKey: "donkereModus")

Apple documentatie


var / let

var is een variabele die je kunt veranderen. let is een constante die je niet kunt veranderen nadat hij is ingesteld.

var leeftijd = 9       // mag veranderen
let naam = "Pim"       // blijft altijd "Pim"

Swift documentatie


View

Het basisprotocol voor alles wat je ziet in SwiftUI. Elke UI-component is een View.

struct GroetView: View {
    var body: some View {
        Text("Hallo!")
    }
}

Apple documentatie


VStack / HStack

Schikken views verticaal (VStack) of horizontaal (HStack) onder of naast elkaar.

VStack {
    Text("Bovenste regel")
    Text("Onderste regel")
}

Apple documentatie


Widget / WidgetKit

Een mini-versie van je app die op het bureaublad staat. WidgetKit is het framework dat de tijdlijn en weergave van widgets beheert.

Apple documentatie


Window / WindowGroup

Window is een enkel, uniek venster in een macOS-app. WindowGroup laat meerdere instanties toe (standaard voor documenten).

Window("Info", id: "info") { InfoView() }

Apple documentatie


withAnimation

Voert wijzigingen in een view uit met een animatie.

withAnimation(.easeInOut(duration: 0.5)) {
    toonDetail = true
}

Apple documentatie


ZStack

Stapelt views over elkaar heen (z-richting: diepte).

ZStack {
    Circle().fill(.blue)
    Text("Midden")
}

Apple documentatie


Xcode

De IDE van Apple waarmee je apps maakt voor Mac, iPhone, iPad en meer. Xcode bevat een code-editor, een manier om je app te starten en testen, en hulp bij het opsporen van fouten. Het is gratis te downloaden via de Mac App Store.