Compile fejl i xcode – hvad gør man

Når du programmerer vil du uden tvivl lave nogle programmeringsfejl, og så vil du opleve nogle gange at xcode kommer med nogle fejlbeskeder der ikke altid giver den store mening. Så hvad gør man egentlig når man får en compile fejl der ikke lige med det samme giver mening.

Der er 2 typer fejl

Der er 2 typer fejl der opstår når man programmerer. Compile time fejl og runtime fejl.

Runtime fejlene er som regel noget du opdager ved at programmet ikke gør som det skal, eller ganske enkelt crasher mens programmet kører. Det sidste er ikke noget vi helst skal opleve og heldigvis er Swift programmeringsproget godt designet til at reducere mængden af runtime fejl.

Compile fejlene kommer når vi forsøger at compilere vores program til binær kode, og her får vi som regel de mest sigende fejlbeskeder men alligvel ikke helt.

De kan være kryptiske at finde ud af.

Hvad betyder compile fejl -1

Sådan en kryptisk compilefejl oplevede Dennis på mit aftenskole sæson 2 kursus.

Vi er i gang med at lære om Core Data, og det er et avanceret framework som kan bruges til at gemme data i feks en database.

Dennis skrev til mig på udvikler sparring, og selv om han havde brugt tid på at lede efter en løsning så var det ikke lykkedes ham at finde årsagen til hvorfor hans app ikke ville compilere.

Og hånden på hjertet, så er en compile fejl -1 heller ikke ligefrem særligt sigende.

Djævlen er i detaljen

Ofte får man faktisk ganske fin vejledning af compileren, men det kan være svært at se skoven for bare træer og derfor valgte jeg at lave en lille video der viser hvordan man kan finde sådan en kryptisk fejl og komme frem til hvad der er årsagen til det.

Derfor tænkte jeg at en video der viser hvordan du kan lede efter den virkelige årsag til den fejl du oplever kunne være gavnlig og den får du her.

Problemet stod faktisk i fejlbeskeden.

Selvom fejlbeskeden var kryptisk så stod årsagen faktisk et sted i den lange smøre.

swift compile fejl
Swift compile fejl

Kigger man efter, ser man at der står at filename “PersonEntitet+CoreDataClass.swift” findes i projektet 2 gange. Og årsagen til dette var at en funktion der er kommet til i xcode 8, som automatisk danner nogle classer man bruger i xcode frameworket.

Men det kan være svært at finde årsagen når man ser den brækspand af information som compileren smider ud i hovedet på en.

Og i det her tilfælde var løsningen at skifte CodeGen på den enkelte entitet til Manual og oprette nye subclasser af NSManagedObject.

Og hvis ovenstående var russisk for dig så skyldes det nok at du ikke er med på mit aftenskolehold.

Mit bedste råd

Når en compile fejl bliver vist er der næsten altid en reference til den linje hvor fejlen opstår.

Prøv at se på fejlbeskedens oprindelse, det vil være der hvor nummeret er 0 eks.

unknown:0 error: filename “PersonEntitet”… osv

Det er som regel der fejlen er opstået og der man skal finde problemet.

Og så er det grundlæggende en god ide at slå koldt vand i blodet, når man skal finde årsagen, for der er en årsag det er ikke bare computeren der driller.