Swift 2.2: de belangrijkste wijzigingen

Onlangs verscheen Swift 2.2, de eerste versie van Swift waarbij de open source-gemeenschap belangrijke bijdragen heeft geleverd.

Swift 2.2 is waarschijnlijk de laatste grote update voordat, in de zomer, Swift 3 zal worden geïntroduceerd. Vooruitlopend daarop zijn in Swift 2.2 een aantal zaken deprecated, zoals dat wordt genoemd: het gebruik ervan wordt inmiddels afgeraden en is in een volgende versie van Swift helemaal niet meer mogelijk.

Ben jij al klaar voor Swift 3?

In dit artikel behandelen we de belangrijkste wijzigingen in Swift 2.2 en lees je wat je kunt doen om nu al code te schrijven die optimaal is voorbereid op de komst van Swift 3.

++ en – verdwijnen

Ben je gewend om, net als bij talen zoals C, Java en PHP, de operators ++ en -- te gebruiken om een waarde te verhogen of te verlagen? In Swift is dat vanaf versie 3 niet meer mogelijk: die operators worden dan geschrapt. De volgende code werkt dan dus niet meer:

In plaats daarvan kun je de volgende manier gebruiken om een Int-waarde met één te verhogen:

Om een Int-waarde met één te verlagen, gebruik je in plaats van -- een soortgelijke methode:

De klassieke for()-lus verdwijnt

Ook al zoiets dat je wellicht kent uit C, Java en PHP: de ‘klassieke for()-lus’, met de puntkomma’s:

In het kader “geen puntkomma’s meer” wordt door het Swift-team ook deze for()-lus uit toekomstige versies van Swift verwijderd. In Swift 2.2 zie je een waarschuwing als je een dergelijke lus nu gebruikt:

De nieuwe manier: for in

Alles wat je met een klassieke for()-lus kunt doen, kun je ook met de Swift-constructie for in:

Om door een array ‘heen te lopen’, kun je in plaats van for() maar liefst drie for in-manieren gebruiken.

Manier 1: met een bereik

Bij deze eerste manier gebruik je een bereik: de waarden 0 tot het aantal elementen in de array. De variabele ikrijgt dus achtereenvolgens de waarde 1, 2, 3 enzovoort, waarna het codeblok wordt uitgevoerd.

Manier 2: alle elementen, stuk voor stuk

Bij de tweede manier wordt elk element uit eenArray stuk voor stuk in de variabele element geplaatst, waarna het bijbehorende codeblok wordt uitgevoerd.

Manier 3: alle elementen en hun index (subscript)

In veel gevallen zul je de index (ook wel subscript genoemd) niet nodig hebben wanneer je met for in door een verzameling heenloopt. Maar in die gevallen waarbij zowel de index als het bijbehorende element nodig hebt, kun je een combinatie van de .enumerate()-methode en een tuple gebruiken:

Een nieuwe methode voor arrays: .removeFirst()

De methode .removeLast(), waarmee je het laatste element uit een array kunt verwijderen, heeft een broertje gekregen: .removeFirst(). Hiermee verwijder je, zoals de naam al aangeeft, het eerste argument uit een array. Let op: net als bij .removeLast() moet je van tevoren controleren of de array wel elementen bevat; als je probeert om met .removeFirst() een element uit een lege array te verwijderen, crasht je app.

.removeFirst() retourneert overigens het zojuist verwijderde array-element, net als .removeLast() dat al deed.

De functie #selector()

In Swift 2.2 is een nieuwe manier opgedoken om een selector (class-methode) op te geven. Tot nu toe deed je dat altijd met een String, als volgt:

Het probleem hierbij was dat er een crash plaatsvond als de .verwerkTap()-methode niet bestaat. Zelfs als je bij de action-parameter een hoofdletter vergeet, crasht je app al.

In Swift 2.2 is dat veranderd. Speciaal hiervoor is de #selector()-functie toegevoegd:

Als de methode .verwerkTap() niet bestaat, bijvoorbeeld omdat je een hoofdletter hebt vergeten, krijg je nu een foutmelding te zien:

Heb je vragen over de wijzigingen in Swift? Klik dan hier en stel ze in het forum van de iOS Academie.

Zelf met Swift aan de slag?

De eBooks van de iOS Academie zijn uiteraard bijgewerkt voor de laatste versie van Swift. En als je de eBooks al hebt aangeschaft, zijn de updates levenslang gratis.

Klik hier voor meer informatie over de populaire serie eBooks: Apps bouwen met Swift.