Artikel top billede

(Foto: Computerworld)

Swift og Xcode

Denne miniserie vil se nærmere på Swift og Xcode. De giver masser af nye spændende funktionaliteter og muligheder for at lave din helt egen Apple-software.

Af Kenneth Geisshirt, Alt om Data

Denne artikel er oprindeligt bragt på Alt om Data. Computerworld overtog i november 2022 Alt om Data. Du kan læse mere om overtagelsen her.

Da Apple annoncerede programmeringssproget Swift ved deres store udviklerkonference i juni 2014, sendte det nærmest chokbølger gennem iOS-miljøet. Et helt nyt programmeringssprog er planlagt til at overtage Objective C’s rolle. Samtidig annoncerede Apple en stor opgradering af deres udviklingsmiljø, Xcode.

Xcode

For at kode i Swift kræver det, at du installerer Xcode version 6 (i skrivende stund er version 6.1.1 den seneste udgave af Xcode). Xcode er Apples udviklingsmiljø til både OS X og iOS. For at kunne bruge Xcode skal du have en computer fra Apple og styresystemet, OS X, skal mindst være af version 10.9.4. Har du en ældre version af OS X, skal du først opgradere dit styresystem, før du kan installerede Xcode.

Du kan let installere Xcode - du finder programmet i App Store. Det kan godt komme til at tage en rum tid at hente ned, for Xcode er meget omfattende.

Xcode understøtter meget andet end Swift. Objective C, C og C++ er godt understøttet, og udvikler du software til OS X, er det ikke utænkeligt, at du vælger at bruge C eller C++. Disse fire programmeringssprog er også de sprog som Apples compiler, Clang, kan oversætte. Clang er et open source-projekt, hvor Apple i dag er et af de mest aktive bidragydere.

Programmerer du i sprog som Python, Ruby eller JavaScript, kan Xcode også bruges, men Xcode reduceres til at være kun en editor.
Men som et integreret udviklingsmiljø (IDE, Integrated Development Environment) kan Xcode naturligvis meget mere. Du kommer senere til at møde Xcodes debugger, og der er mulighed for at “tegne” dine apps. Endvidere har Xcode integration med versionskontrolsystemer som git.

Swift

Det er på tide, at du kommer i gang med at se på Swift. Da Swift blev annonceret i juni 2014, var sproget fuldstændig ukendt uden for en lille kreds hos Apple. I dag, et halvt år senere, betragtes sproget som stabilt. Det skal forstås på den måde, at sproget ikke forventes at ændre sig radikalt i den nærmeste fremtid.

Et bærende princip bag Swift er, at mange af de svære og usikre dele af Objective C ikke kan bruges af almindelige programmører. Eftersom Objective C bygger på gode, gamle C, kan du som programmør manipulere direkte med hukommelsen vha. pointere. Det er velkendt, at pointere og manipulation af hukommelse er en af de største kilder til fejl. I Swift kan du ikke umiddelbart tilgå hukommelsen, men det er naturligvis muligt, hvis du får brug for det.

Samtidig har Swift en mere moderne syntaks end Objective C. En moderne syntaks betyder i denne forbindelse, at du ikke skal skrive nær så meget som i Objective C. Især slipper du for de mange kantede parenteser. Mange programmeringssprog bruger semikolon til at skille programlinjer ad. I Swift kan du nøjes med linjeskift, og du får kun brug for semikolon, hvis du skal have mere end én programlinje på en fysisk linje.

Generelt behøver du ikke at angive typen, når du erklærer en variabel. En typisk fejl i programmer er, at en variabel bruges før den har fået tildelt en værdi. I Swift skal du ved erklæring af en variabel give den en initial værdi. Oversætteren er i stand til at regne typen ud. Det strikse typesystem betyder, at du ikke kommer til at give en variabel en meningsløs værdi - hvilket ellers kan føre til, at din app crasher.

Du kan angive typen på en variabel, hvis du har brug for det, men du kommer langt uden. Se Infoboks “Eksempel 1” for at se, hvordan du erklærer en konstant (med nøgleordet let) og en variabel (med nøgleordet var). Eksemplet viser også, at Swift har løkker (nøgleord for). Kommentarer i din kode begynder med // og rækker frem til linjens slutning. Har du brug for en kommentar over flere linjer, kan du bruge /* … */.

Swift har selvfølgelig funktioner. I infoboks “Eksempel 2” ser du, hvordan den rekursive fakultetsfunktion kan skrives. Har du tidligere skrevet i sprog som C eller Objective C, ser syntaksen måske lidt underlig ud. På mange måder er Swifts syntaks for funktioner tættere på, hvad du finder i funktionssprogrammeringssprog. Når du har set lidt nærmere på den, virker den egentlig ganske elegant.

Swift er et objekt-orienteret programmeringssprog med klasser og hvad der hører til. Du kan erklære en klasse og nedarve den til andre klasser. Felter eller attributter skal erklæres med var som ved variabler. Metoderne er funktioner, som erklæres på samme måde som andre funktioner. I infoboks “Eksempel 3” finder du klassen Person.

Klassen har en enkelt metode, nemlig fuldenavn. Du finder også en anden klasse i eksemplet - klassen Barn. Den nedarver fra Person og har derved attributterne fornavn og efternavn. Endvidere har den to andre attributter, far og mor. Endvidere overskrives - med override - funktionen fuldenavn.

Som allerede nævnt, forsøger Swift at være et moderne programmeringssprog. Og det betyder, at Swift låner en række elementer fra funktionssprogrammeringssprog. I infoboks “Eksempel 4” finder du et par prøver på, hvordan det kan se ud. Det første, som du måske bemærker, er, at Swift kan arbejde med arrays på en meget elegant måde.

Konstruktionen Array(1…10) opretter et array med elementerne fra 1 til og med 10. Eftersom 1 og 10 er heltal, kommer det resulterende array til at være et array af denne type. Funktionen map tager et argument, som er en funktion. Denne funktion vil map kalde for hvert element i arrayet. I dette tilfælde vil det sige map(kvadrat(1)), map(kvadrat(2)) og så videre.

Resultaterne for de 10 kald samles i et nyt array. At kalde en funktion med en anden funktion som argument kan lade sig køre i programmeringssprog som C og Objective C, men det er besværligt, og der skal ikke meget til, før det går galt, og din app crasher.

I det andet tilfælde bruges funktionen reduce. Dens andet argument er også en funktion, og denne funktion skal tage to argumenter. Reduce kalder gentagne gange funktionen sum med resultatet af det foregående kald. Det vil sige, at linjen omskrives til sum(0, sum(1, sum(2, … ))). Som du kan se, betyder det, at summen af tallene fra 1 til og med 10 udregnes. Med andre ord, koden i infofoks “Eksempel 1” giver det samme resultat som reduce, men med reduce skal du skrive mindre kode.

Det sidste tilfælde kan du se, hvordan filter kan bruges. Dens argument er et prædikat, dvs. en funktion som returnerer en sand eller falsk. Når prædikatet er sandt, gemmes elementet i et nyt array og er det falsk, smides det væk. Eksemplet er meget enkelt; funktionen lige returnerer sand, hvis argumentet i er et lige tal (resten ved heltalsdivision med 2 er nul) og filter ender med at fiske alle de lige tal ud.

Xcode i brug

Du kan jo ikke nøjes med at læse om Swift, så du må hellere få startet Xcode op. I denne artikel vil vi antage, at du har sat din computer (og Xcode) op til engelsk (det er mest praktisk, da det er lettere at google evt. engelske fejlbeskeder).

Som det første skal du oprette et nyt projekt. I næste artikel i serien skal du se, hvordan en iOS- app bliver til, så du kan allerede nu oprette en iOS-app. I menuen finder du File → New → Project → iOS/Single View Application.

Xcode vil oprette en “tom” app til dig. Den er tom i den forstand, at den ingen funktionalitet har - din nye app er blot en tom skal, og du skal fylde den ud. Der er to targets i din nye app: selve kildeteksten og dine unit tests.
se FIGUR 1

Playground

Når du skal til at lære et nyt programmeringssprog som Swift, er det muligvis ikke en app, som du vil begynde med. En legeplads er nok mere, hvad du har brug for. Det har Apple tænkt på - Apple kalder konceptet for Playground. Du kan oprette en ny legeplads samme sted, som du opretter et nyt projekt.

Tricket med disse legepladser er, at Xcode udfører din kode, mens du indtaster den. Det betyder, at du kan eksperimentere og lære med Swift uden den sædvanlige oversætte/køre/rette-måde som fleste programmører har været vant til.
se FIGUR 2

Git og github

Om du arbejder alene eller sammen med andre, er versionsstyring altid en vigtig komponent af ethvert udviklingsprojekt. I de sidste par år har git vundet stort indpas. Git er udviklet af Linus Torvalds - manden bag Linux.
Du kan sætte git op selv på din egen server. Men du kan også finde en del firmaer, som tilbyder git hosting som en tjeneste. Det mest populære git hosting-firma er github (http://github.com). Er dit software-projekt et open source-projekt, koster det ikke noget at bruge github. Ønsker du derimod private/lukkede arkiver (på engelsk: repositories), skal du betale.

Bruger du github, kan du oprette et nyt arkiv gennem githubs web-interface. Når du først har oprettet et tom arkiv, skal du have en kopi ned på din computer. I git-verdenen kaldes det at klone et arkiv (på engelsk clone repository).
se FIGUR 3 OG se FIGUR 4

Egentlig er git et kommando-linje-værktøj. Du kan styre alt omkring git ved at åbne en Terminal og taste den ene kommando efter den anden. Xcode har integration med git. Det betyder, at du kan gøre næsten alt fra Xcode ved at klikke.
se FIGUR 5

En grundlæggende idé i git er, at du altid arbejder i en branch. På den måde arbejder du uafhængig af de andre i din organisation, og dine ændringer ødelægger det ikke for de andre. Typisk har du en master branch, som er den officielt seneste kildetekst i projektet.

Når dit arbejde er klar til at blive flettet ind i, sender du en pull request til de andre udviklere. Grunden til det lidt pudsige navn er, at dine ændringer “trækkes” (engelsk pull) ind i master, hvis de er gode nok. Under et pull request kan de andre udviklere kommentere på din kode, og du kan forbedre den.

Måske har du andre projekter end dine Xcode-projekter, og det kan derfor være en fordel at bruge en git-klient, som ikke er integreret med Xcode. gitX (http://gitx.frim.nl) er et program til OS X af denne karakter, og det ses ofte på udviklere, som har en computer fra Apple.

Hvis du gerne vil se kildeteksten til den app, som vises i denne og næste artikel, kan du finde det hele som et repository hos github. Adressen er https://github.com/kneth/SjovMedSwift. For at komme i gang, skal du klone (lave en kopi af) omtalte repository. I en Terminal kan du gøre det med kommandoen git clone https://github.com/kneth/SjovMedSwift.git. Bemærk, at kommandolinje-værktøjet git er præinstalleret på alle Apples computere!

Simulator

Apple har efterhånden designet en del forskellige telefoner og tablets som alle kører iOS. Det vil være meget besværligt, hvis du skal have adgang til alle disse devices, når du udvikler en app. Samtidig kan du aldrig teste din app i alle de situationer, du ønsker. Det kan for eksempel være forskellige koordinater fra gps og retningen på kompasnålen.

Med Xcode følger heldigvis en simulator. Den kan simulere alle de devices, som Apple markedsfører. Endvidere vil du ofte kunne finde beta-udgaver af iOS, inden den frigives endelig. På den måde kan du teste din app med flere - inkl. fremtidige - devices og styresystemer.

Brugen af simulatoren er ganske enkelt. Der er en dropdown- menu i Xcode, hvor du vælger, hvilket device du ønsker at simulere. Når du har valgt device, kan du køre din app ved at finde menupunktet Product → Run eller ved at trykke på genvejen æble-tast R.
se FIGUR 6

Det er værd at vide, at simulatoren ikke er en præcis simulator af en iPhone eller en iPad. Apples mobile enheder bygger alle på en ARM-processor af den ene eller anden type. Derimod sidder der en processor fra Intel i Apples computere. Skulle simulatoren simulere en ARM-processor, ville den være meget langsom. Med andre ord, Apple har bygget simulatoren således, at iOS kører under Intel i stedet for.

Filerne, som dit simulerede Apple device bruger, ligger placeret i filsystemet på din Apple computer. Du finder filerne i folderen ~/Library/Developer/CoreSimulator/Devices. Husk at tilde (~) betyder hjemmefolderen.

Desværre benytter Xcode sig af en hash-kode til at generere navne, så det kan være ligt besværligt at finde dine filer. Det kan være en fordel at se på datomærkerne og på den måde regne ud, hvilken folder eller fil som du netop har haft åben.

Debugger

Brian Kernighan (en af udviklerne bag UNIX, C og meget andet godt) har sagt, at debugging er dobbelt så svært som at programmere. Ethvert værktøj, som gør debugging lettere, hilses altid velkommen blandt programmører. Alle udviklingsmiljøer har en debugger indbygget, og Xcode er ingen undtagelse.

Når du kører dit program i simulatoren, som blev omtalt før, har du allerede adgang til debuggeren. For at stoppe udførelsen af din app og undersøge variabler, kan du sætte et break point på en linje. Du klikker blot med musen i margin/på linjenummeret.

Menupunktet Debug indeholder de funktioner, som får det muligt for dig at debugge din app.
Du kan se de forskellige variabler og deres værdi i bunden af skærmen. Samtidig kan du se værdien af en variabel ved at holde musen over den.
se FIGUR 7 og FIGUR 8

Når du er nået til et break point, kan du enten genoptage kørslen af din app eller gå en linje frem ad gangen. Der er naturligvis genvejstaster for dem. Xcode er venlig nok til at fortælle, hvad disse genveje er i menuen Debug. Du skal være opmærksom på, at Xcode og din computer kan være sat op således, at du skal bruge fn-tasten sammen med de viste genvejstaster.

Det forventes, at Swift skal overtage pladsen som programmeringssproget for apps til iPhone og iPad på et tidspunkt i fremtiden. Tidligere har programmeringssproget Objective-C været det mest udbredte sprog til udvikling af apps (og til programmer til OS X). Objective-C har en meget lang historie og sproget har også været brugt udenfor Apple.

Sproget så dagens lys tilbage i 1983, og store dele af NeXTSTEP var udviklet i sproget. NeXTSTEP var det styresystem, som Steve Jobs arbejdede på i den periode, hvor han var væk fra Apple (vi er tilbage i slutningen af 1980’erne). Meget af brugergrænsefladen i OS X har rødder i NeXTSTEP.

Med et gammelt programmeringssprog som Objective-C findes der et stort community og et bredt udvalg af bøger, websites og blogs om, hvordan sproget kan anvendes. Både oversættere som GCC (GNU Compiler Collection) og Clang understøtter Objective-C, og du kan i princippet udvikle programmer til styresystemer som Linux og Windows. I praktisk er det svært, idet du ikke har Apples biblioteker til hjælp.

Det store Objective-C community har udviklet mange biblioteker og værktøjer, som i større eller mindre omfang gør det lettere at udvikle nye apps. Der findes utrolig mange biblioteker, som er frigivet under en eller anden open source licens: I skrivende stund findes der mere end 170.000 offentlige Github repositories, som indeholder kode skrevet i Objective-C! Det skal dog sættes i relation til det faktum, at Github er vært for mere end 18 mio. offentlige repositories.

Objective-C er et objekt-orienteret sprog, som bygger ovenpå programmeringssproget C. Du kan sige, at det er en konkurrent til C++, som jo også udspringer af C og er fra samme tidsperiode. Ulemperne ved Objective-C stammer fra C, hvor den uerfarne programmør let kan lave fejl. Swift er et forsøg fra Apples side på at hjælpe programmører, så det er lettere at skrive korrekte programmer og apps.

Swift og Objective-C deler objekt-model. Det betyder, at du i dine Swift-programmer kan kalde biblioteker skrevet i Objective-C. Implikationen er, at det er muligt at genbruge de gamle biblioteker fra det store community og med tiden skifte over til Swift.

Desværre er det meget svært - nærmest umuligt - at kalde biblioteker skrevet i C og C++. Og netop C og C++ er stadig meget populære programmeringssprog, hvilket sætter nogle hårde grænser op for, hvor let det er at bruge andres kode. For at få adgang til biblioteker skrevet i C og C++, er du nu nødt til først at skrive en wrapper i Objective-C og så bruge wrapperen i dine Swift-programmer.

Mangel på CocoaPods

Apples udviklingsmiljøer har - naturligvis fristes man til at sige - god understøttelse for Apples biblioteker som f.eks. Cocoa. Men det er meget mere problematisk med biblioteker udviklet af personer udenfor Apple. Heldigvis har vi CocoaPods. CocoaPods er en dependency manager til OS X og iOS apps. Her kan du beskrive, hvilke biblioteker din app skal bruge, og CocoaPods vil downloade og integrere dem i dit Xcode-projekt.

Desværre virker CocoaPods kun med Objective-C. Som Swift-udvikler kan du ikke bruge CocoaPods. Omkring jul frigav CocoaPods-udviklerne en beta-udgave, som er første forsøg på at integrere Swift ind i Cocoa-Pods. Forhåbentlig er der lys forude og Swift-programmører kan snart lette deres hverdag og bruge CocoaPods. Du vil senere i denne artikel se, hvor besværligt det ofte er at bruge biblioteker i Swift.

Det er virkelig en skam, at Apple med Swift har ignoreret deres community på den måde. Indtil CocoaPods understøtter Swift, må du ofte igennem en længere og kompleks procedure for at bruge andres biblioteker.

Tilføj en knap til en app

I forrige artikel kom vi i gang med en lille app skrevet i Swift. Du finder den på Github på adressen https://github.com/kneth/SjovMedSwift. Hvis du ikke allerede har hentet den, er der god grund til at gøre det nu. Eftersom det er et Github-projekt, kan det være en god idé at opdatere med de seneste ændringer. På en kommando-linje kan du gøre det med kommandoen git pull.

For at give dig et indtryk af, hvordan du kan arbejde med din apps brugergrænseflade, vil vi tilføje en knap på forsiden. Der findes flere forskellige måder at arbejde med brugergrænsefladen, og måden kan afhænge af, hvor stor din app er, hvor mange udviklere der arbejder på din app, etc.

Du skal naturligvis åbne dit app-projekt i Xcode. Du har en rude (engelsk: pane) til venstre, hvor du kan se alle dine filer. En af de nyere måder, at arbejde med brugergrænsefladen på, er ved at bruge storyboards. Har du oprettet en “tom” app, har du typisk en fil med navnet Main.storyboard. For en “tom” app er dit storyboard uden indhold (det er faktisk det manglende indhold, som gør din app “tom”, for der er jo masser af filer).
Se figur 10

For at gøre det muligt for din app at gøre bare lidt, kan du tilføje en knap (engelsk: button). Muligvis er ruden med elementer til brugergrænsefladen skjult, og du må aktivere ruden først.
Se figur 11

Når du har fundet knappen, kan du trække den ind i dit storyboard, og derved har du tilføjet en knap. Du kan rette teksten på knappen - som default er teksten blot Button. Kører du nu din app, kan du trykke på knappen, men der sker ikke noget synligt.

At sige, at dit storyboard er uden indhold, er lidt forkert: der er en view controller bag den tomme skærm. Koden til den finder du i filen ViewController.swift. En “tom” app består af to funktioner (rettere metoder) i den omtalte view controller. Funktionen viewDidLoad kaldes, når din app er ved at være klar. Har du brug for at initialisere noget data eller lignende, er det et godt sted at gøre det. Den anden funktion kaldes, når din telefon er ved at løbe tør for hukommelse og giver dig en tidlig advarsel om det. Hvis du har mulighed for det, bør du frigive hukommelse, således at din app kan fortsætte med at køre.

For at give din knap lidt liv, kan du tilføje en ny funktion. Du finder et eksempel på denne funktion i infoboks “Kode til trykknap”. Programlogikken er meget enkel: Der oprettes en beskedboks på skærmen, og brugeren kan trykke på “OK” for at lukke beskedboksen.
Men funktionen i sig selv er ikke nok. Du skal forbinde selve knappen med funktionen. Igen er der flere måder at gøre det på, men det hurtigste er at trække en forbindelse med musen fra knappen til det lille gule ikon i toppen - mens du holder CTRL-tasten nede. Der vil nu komme en lille dialogboks op, hvor du kan finde navnet på din funktion.
Se figur 12

Nu sker der endelig noget, når du klikker på din knap. Det er måske ikke så meget, men du er nu i stand til at bygge en mere kompleks brugergrænseflade op.
Se figur 13

Alamofire

Mange apps bruger data fra internettet. Det kan være offentlige data, eller det kan være data fra app-udviklerens servere. Har du tidligere udviklet i Objective-C, kender du - eller har hørt om - AFNetworking. Det er et meget populært bibliotek til at håndtere meget omkring netværk - både det at hente og sende data.

Som allerede nævnt, kan det være en udfordring at bruge biblioteker fra andre end Apple. AFNetworking findes ikke til Swift, men hovedudvikleren bag AFNetworking har påbegyndt et nyt projekt - samme funktionalitet som AFNetworking men til Swift. Projektet har fået navnet Alamofire.

Det kræver en del trin for at få Alamofire til at virke i din app. Som det er nu, er det klart en fordel, hvis dit app-projekt køres gennem git, idet Alamofire benytter et trick med at integrere sig ind i dit projekt som et undermodul i git. Første trin er at hente Alamofire fra Github - kommandoen er git submodule add https://github.com/Alamofire/Alamofire.git. Det er tydeligvis en noget eksotisk brug af git, som du her er ude i. Når Alamofire er hentet, kan du åbne folderen med Alamofire og trække Alamofire.xcodeproj ind i Xcode. Dette trin sikrer, at Alamofire bygges sammen med din app.
Se figur 14

Næste trin er at finde “Build Phases” i Xcode. Det finder du ved at klikke på den øverste linje i filnavigatoren til venstre. Du finder typisk to targets: din app og et til unit tests. Du skal dels tilføje en afhængighed (target dependency) på Alamofire, dels oprette et nyt byggetrin således at det byggede Alamofire-framework kopieres med din app.
Se figur 15

Bare ud fra disse trin kan du sikkert forstå, hvorfor mange Swift-udviklere ser frem til at få CocoaPods integreret med Swift!

Med Alamofire på plads er det tid til at bruge det. I de Swift-filer, hvor du skal bruge Alamofire, skal du tilføje linjen import Alamofire.
Det er værd at bemærke, at Alamofire henter al data asynkront. Det betyder, at du skal skrive din app, så brugergrænsefladen kan opdatere gennem call backs og ikke blot stå og vente på, at data kommer ind fra en server.
I infoboks “Hent data med Alamofire” finder du nok det mest enkle eksempel på, hvordan du kan bruge Alamofire. Når du trykker på knappen, vil Alamofire hente Alt om DATAs forside og udregne, hvor mange tegn den fylder. Som du kan se, bliver selve beskedboksen først vist, når data er hentet. Det betyder, at der kan være forsinkelse på, at brugeren ser beskeden efter brugerens tryk på knappen.
Se figur 16

Realm

I enhver iPhone og iPad finder du en database. Faktisk er det den samme database, som du finder i Android. Der er tale om SQLite. Det er efterhånden en ældre database - den stammer fra 1990’erne. Det er lang tid før smartphones - og før vores computere (som smartphones og tablets jo i virkeligheden er) kørte på batteri, og tanker om energieffektivitet var ikke en del af dagsordenen.

Mange iOS-udviklere bruger CoreData, som er en avanceret graf- og objektdatabase. Men ydeevnen af CoreData er ikke imponerende, samtidig med at det kan være svært at vedligeholde en kompleks datamodel.
Realm er en ny database til både iOS og Android (første offentlige udgave er fra sommeren 2014). Den er udviklet med mobile enheder i tankerne og er derfor et spændende alternativ til SQLite.

Hellere ikke Realm til Swift er så enkel at gå til - udgaven til Objective-C benytter som så mange andre CocoaPods. Du skal først downloade en zip-fil fra Realms hjemmeside (http://realm.io). I den udpakkede zip-fil finder du en folder ved navn ios med filen Realm.framework. Du skal trække denne fil ind i Xcode (det er vigtigt, at du klikker “Copy items if needed” af). Som med Alamofire skal du ind og rette lidt i dine build phases. Denne gang skal du tilføje libc++.dylib til fasen “Link Binary With Libraries”. Hvis ikke Realm.framework står på listen, skal du også tilføje dette. Til slut skal du trække filen RLMSupport.swift fra folderen Swift over i Xcode (igen skal “Copy items if needed” være klikket af).
Se figur 17

SQLite er en relationsdatabase, hvor data organiseres i tabeller og rækker. Realm er ikke sådan en database - der er nærmere tale om en krydsning mellem en graf- og en objektdatabase. Du ser objektdatabase-konceptet ved, at du skal oprette næsten almindelige klasser. I infoboks “En realm-klasse” finder du et lille eksempel på en Realm-klasse. Klassen består af to attributter/felter, nemlig en streng og et heltal. Bemærk at klassen nedarver fra RLMObject. Denne nedarvning gør, at du kan gemme objekter af denne klasse i en Realm-database.

Realm arbejder med transaktioner for at sikre konsistente data. Data gemmes i en fil på den mobile enhed, og du kan i princippet have flere datafiler, hvis du ønsker det. Ofte begynder et objekt som et fritstående objekt for senere at blive gemt i et Realm. I infoboks “Indsæt data i Realm” kan du se, hvordan størrelsen af et website gemmes. Alamofire bruges naturligvis til at hente forsiden af Alt om DATAs hjemmeside - ligesom før.

Når data er gemt i Realm, kan du bruge det til noget. Du kan lave forespørgsler. Du behøver ikke påbegynde en læsetransaktion - det er implicit i alle læseoperationer. Den mest enkle forespørgsel er at bede om alle objekter hørende til en specifik klasse. I infoboks - “Hent data fra Realm” ser du netop dette - metoden allObjects har alle klasser, som nedarver fra RLMObject. Resultatet af en forespørgsel kan bruges på mange måder, men aggregatfunktioner som antal (count) og summering (sumOfProperty) er ganske brugbare.
Se figur 18

Afslutning

Swift er et nyt programmeringssprog. Godt nok har Apple og deres community arbejdet hårdt siden sommeren 2014, men det er stadig lidt råt. At bruge andres biblioteker kan lade sig gøre, men det er besværligt.
Forhåbentlig har de to artikler givet dig et indtryk af Swift. Der er ingen tvivl om, at Apple mener det, og arbejder du seriøst med udvikling af apps til iOS, er der ingen vej uden om Swift og Xcode. I de kommende år får du sandsynligvis både brug for Swift og Objective-C som en del af din værktøjskasse som app-udvikler.

Objective-C: http://en.wikipedia.org/wiki/Objective-C

CocoaPods: http://cocoapods.org og http://blog.cocoapods.org/Pod-Authors-Guide-to-CocoaPods-Frameworks/

Alamofire: https://github.com/Alamofire/Alamofire

Realm - http://realm.io

[themepacific_accordion]
[themepacific_accordion_section title="Fakta"]

Brugergrupper i DK/København

[/themepacific_accordion_section]
[themepacific_accordion_section title="Fakta"]

Få mere at vide

[/themepacific_accordion_section]
[/themepacific_accordion]