ios - swift: unexpectedly found nil while unwrapping an Optional value in awakeFromNib() -


i missed something, life of me, can't figure out.

i'm working on app mvc structure; place needed fields on xib, rely on view change font, size, etc.

here's code:

import foundation import uikit  protocol productionwellchemistryformtwoviewdelegate {  }  class productionwellchemistryformtwoview: baseuiview {      let fontsizel : cgfloat = 18     let fontname : string = "futura"     var delegate : productionwellchemistryformtwoviewdelegate!      @iboutlet weak var labeltitle: uilabel!     @iboutlet weak var labelfieldcode: uilabel!     @iboutlet weak var labelgasflaskno: uilabel!     @iboutlet weak var labeldateprepared: uilabel!     @iboutlet weak var labeldatevacuumed: uilabel!     @iboutlet weak var labelclickingsound: uilabel!     @iboutlet weak var labeltimestarted: uilabel!     @iboutlet weak var labeltimefinished: uilabel!     @iboutlet weak var labelwhpstarted: uilabel!     @iboutlet weak var labelwhpended: uilabel!     @iboutlet weak var labelsppstarted: uilabel!     @iboutlet weak var labelsppended: uilabel!     @iboutlet weak var labelspstarted: uilabel!     @iboutlet weak var labelspended: uilabel!     @iboutlet weak var labelremarks: uilabel!      @iboutlet weak var textfieldfieldcode: uitextfield!     @iboutlet weak var textfieldgasflaskno: uitextfield!     @iboutlet weak var textfielddateprepared: uitextfield!     @iboutlet weak var textfielddatevacuumed: uitextfield!     @iboutlet weak var textfieldtimestarted: uitextfield!     @iboutlet weak var textfieldtimefinished: uitextfield!     @iboutlet weak var textfieldwhpstarted: uitextfield!     @iboutlet weak var textfieldwhpended: uitextfield!     @iboutlet weak var textfieldsppstarted: uitextfield!     @iboutlet weak var textfieldsppended: uitextfield!     @iboutlet weak var textfieldspstarted: uitextfield!     @iboutlet weak var textfieldspended: uitextfield!     @iboutlet weak var textviewremarks: uitextview!      @iboutlet weak var switchclicksound: uiswitch!      override func awakefromnib() {         self.labeltitle.font = uifont(name: self.fontname, size: self.fontsizel)         self.labelfieldcode.font = uifont(name: self.fontname, size: self.fontsizel)         self.labelgasflaskno.font = uifont(name: self.fontname, size: self.fontsizel)         self.labeldateprepared.font = uifont(name: self.fontname, size: self.fontsizel)         self.labeldatevacuumed.font = uifont(name: self.fontname, size: self.fontsizel)         self.labelclickingsound.font = uifont(name: self.fontname, size: self.fontsizel)         self.labeltimestarted.font = uifont(name: self.fontname, size: self.fontsizel)         self.labeltimefinished.font = uifont(name: self.fontname, size: self.fontsizel)         self.labelwhpstarted.font = uifont(name: self.fontname, size: self.fontsizel)         self.labelwhpended.font = uifont(name: self.fontname, size: self.fontsizel)         self.labelsppstarted.font = uifont(name: self.fontname, size: self.fontsizel)         self.labelsppended.font = uifont(name: self.fontname, size: self.fontsizel)         self.labelspstarted.font = uifont(name: self.fontname, size: self.fontsizel)         self.labelspended.font = uifont(name: self.fontname, size: self.fontsizel)         self.labelremarks.font = uifont(name: self.fontname, size: self.fontsizel)          self.textfieldfieldcode.font = uifont(name: self.fontname, size: self.fontsizel)         self.textfieldgasflaskno.font = uifont(name: self.fontname, size: self.fontsizel)         self.textfielddateprepared.font = uifont(name: self.fontname, size: self.fontsizel)         self.textfielddatevacuumed.font = uifont(name: self.fontname, size: self.fontsizel)         self.textfieldtimestarted.font = uifont(name: self.fontname, size: self.fontsizel)         self.textfieldtimefinished.font = uifont(name: self.fontname, size: self.fontsizel)         self.textfieldwhpstarted.font = uifont(name: self.fontname, size: self.fontsizel)         self.textfieldwhpended.font = uifont(name: self.fontname, size: self.fontsizel)         self.textfieldsppstarted.font = uifont(name: self.fontname, size: self.fontsizel)         self.textfieldsppended.font = uifont(name: self.fontname, size: self.fontsizel)         self.textfieldspstarted.font = uifont(name: self.fontname, size: self.fontsizel)         self.textfieldspended.font = uifont(name: self.fontname, size: self.fontsizel)         self.textviewremarks.font = uifont(name: self.fontname, size: self.fontsizel)         self.textviewremarks.layer.borderwidth = 1.0         self.textviewremarks.layer.bordercolor = uicolor.blackcolor().cgcolor         self.textviewremarks.text = ""     } } 

the code throws exception when read first line of awakefromnib(), whatever (i tried commenting out first line, went second).

i've done dozen or times total, i'm not sure what's happening. thing can think of did differently try fix previous unknown class in interface builder file going xib's source code , renaming class productionwellchemistryformtwoviewer, erroneously named class renamed class (no er past view).

the app runs if disable inside awakefromnib().

edit: app runs fine, fonts , all, if change following line in xib source code:

<view contentmode="scaletofill" translatesautoresizingmaskintoconstraints="no" id="vyc-5l-gfd" userlabel="contentview" customclass="productionwellchemistryformtwoview" custommodule="integra_geochemistry" custommoduleprovider="target"> 

back to:

<view contentmode="scaletofill" translatesautoresizingmaskintoconstraints="no" id="vyc-5l-gfd" userlabel="contentview" customclass="productionwellchemistryformtwoviewer"  custommodule="integra_geochemistry" custommoduleprovider="target"> 

i unknown class _ttc20integra_geochemistry36productionwellchemistryformtwoviewer in interface builder file. error, @ least works.

i'll expand on situation mentioned above, here's happened:

  1. i created xib.
  2. i created view, erroneously named productionwellchemistryformtwoviewer
  3. set xib's class said view.
  4. found out wrong name.
  5. changed name productionwellchemistryformtwoview. errors pop-up.
  6. manually changed reference productionwellchemistryformtwoviewer productionwellchemistryformtwoview.
  7. noticed running app produces unknown class error, went xib source, removed productionwellchemistryformtwoviewer.
  8. then got errors above.

so in likelihood didn't link 1 of iboutlets.

with many outlets going confusing figure out one, suggest take @originaluser2's suggestion , use ibcollections.

class productionwellchemistryformtwoview: baseuiview {     let fontsizel : cgfloat = 18     let fontname : string = "futura"     var delegate : productionwellchemistryformtwoviewdelegate!      // declaring iboutlet array tells ib collection     @iboutlet var labelcollection: [uilabel]!      @iboutlet var textfieldcollection: [uitextfield]!        @iboutlet weak var textviewremarks: uitextview!      override func awakefromnib() {         let font = uifont(name: self.fontname, size: self.fontsizel)         labelcollection.each{ $0.font = font }         textfieldcollection.each{ $0.font = font }          textviewremarks.layer.borderwidth = 1.0         textviewremarks.layer.bordercolor = uicolor.blackcolor().cgcolor         textviewremarks.text = ""     }    } 

then go through xib , connect outlets needed.


Comments

Popular posts from this blog

authentication - Mongodb revoke acccess to connect test database -

r - Update two sets of radiobuttons reactively - shiny -

ios - Realm over CoreData should I use NSFetchedResultController or a Dictionary? -