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.
Video disclaimer
Videoen er tilbage fra 2017, blot så du er klar over at eksemplet har nogle år på bagen, og vi er pt ikke i gang med aftenskole undervisning
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.
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.
Andre historier
iPhone 2024 Glowtime event
Mandag d. 9/9 er der keynote for Apples nyeste iPhone 16 og deres nyeste Apple Watch. Titlen til eventen har de de kaldt for…
WWDC 24 – Apples AI comeback?
Apples keynote startede med den måske fedeste video de nogen sinde har lavet. Og hvis du ikke orker at se keynoten, så nyd i…
iPad keynote
Årets første keynote i 2024 handler om iPad, og det har Apple været så flink at afsløre allerede i indkaldelsen til keynoten ved at…
Skræmmende sen keynote
Natten mellem den 30 og den 31 oktober, holder Apple en mac keynote med titlen “Scary Fast”. Og der er ingen tvivl om at…
Tid til at usb-C iPhone 15
Der er Apple keynote den 12 September 2023, og september keynote er altid lancering af ny iPhone, nyt Apple Watch og ofte nye airpods…
WWDC 2023 – Et nyt syn på fremtiden
Apple står for at lancere deres bud på en Argumented Reality brille eller maske. Den har været på designbordet længe, og det er år…