I'm getting this error code:
error: Execution was interrupted, reason: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0). The process has been left at the point where it was interrupted, use "thread return -x" to return to the state before expression evaluation.
And the PlayGround said:
Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value: file BilanDico-04.playground, line 137
Here's my code:
import Foundation import UIKit let TableauDesBesoinsQuotidienEnVitaminesretenues : [String : Float] = [ "aRetinol" : 800, "aBetacarotene" : 2100, "vitamineC" : 80, "vitamineB1" : 1.1, "calcium" : 800, "omega3" : 2 ] let TableauDesVitaminesRetenuesPourObjectifs : [String] = [ "aRetinol", "aBetacarotene", "vitamineC", "vitamineB1", "calcium", "omega3" ] class AlimentObject { var id = UUID().uuidString var nomAliment = "Nouvel aliment" var poids : Float = 100 var calories : Float = 0 var proteines : Float = 0 var lipides : Float = 0 var glucides : Float = 0 var aRetinol : Float = 0 var aBetacarotene : Float = 0 var vitamineC : Float = 0 var vitamineB1 : Float = 0 var calcium : Float = 0 var omega3 : Float = 0 var comments : String = "" var premierBooleen: Bool var optimize: Bool init(nomAliment: String, poids: Float, calories: Float, proteines: Float, lipides: Float, glucides: Float, aRetinol: Float, aBetacarotene: Float, vitamineC: Float, vitamineB1: Float, calcium: Float, omega3: Float, comments:String, premierBooleen: Bool, optimize: Bool) { self.nomAliment = nomAliment self.poids = poids self.calories = calories self.proteines = proteines self.lipides = lipides self.glucides = glucides self.aRetinol = aRetinol self.aBetacarotene = aBetacarotene self.vitamineC = vitamineC self.vitamineB1 = vitamineB1 self.calcium = calcium self.omega3 = omega3 self.comments = comments self.premierBooleen = false self.optimize = false } convenience init() { self.init(nomAliment: "Aliment intialisé à zéro", poids: 100, calories: 0, proteines: 0, lipides: 0, glucides: 0, aRetinol: 0, aBetacarotene: 0, vitamineC: 0, vitamineB1: 0, calcium: 0, omega3: 0, comments: "", premierBooleen: false, optimize: false) } } class Donnees { static var AlimentListWithSections = [[AlimentObject]]() static let list1 = [ AlimentObject(nomAliment: "Blanc de poulet", poids: 100, calories: 108, proteines: 24, lipides: 1, glucides: 0, aRetinol: 8, aBetacarotene: 0, vitamineC: 0, vitamineB1: 0.08, calcium: 8, omega3: 0.03, comments: "sdsdsdsdsd sdsddsdsd", premierBooleen: false, optimize: false), AlimentObject(nomAliment: "Avocat", poids: 100, calories: 147, proteines: 1.76, lipides: 13.80, glucides: 1.57, aRetinol: 0, aBetacarotene: 55, vitamineC: 5.49, vitamineB1: 0.05, calcium: 11.2, omega3: 0.08, comments: "aaaaaaaaa sdsddsdsd", premierBooleen: false, optimize: false), AlimentObject(nomAliment: "Amandes", poids: 100, calories: 634, proteines: 21, lipides: 53, glucides: 8, aRetinol: 8, aBetacarotene: 1, vitamineC: 0.8, vitamineB1: 0.18, calcium: 248, omega3: 0.06, comments: "fffffff sdsddsdsd", premierBooleen: false, optimize: false) ] static let list2 = [ AlimentObject(nomAliment: "Poivron Jaune", poids: 100, calories: 29.2, proteines: 1, lipides: 5.42, glucides: 0.21, aRetinol: 0, aBetacarotene: 120, vitamineC: 184, vitamineB1: 0.03, calcium: 11, omega3: 0.02, comments: "lllllllssss", premierBooleen: false, optimize: false), AlimentObject(nomAliment: "Saumon cru", poids: 100, calories: 192, proteines: 20.5, lipides: 12.2, glucides: 0, aRetinol: 8, aBetacarotene: 0, vitamineC: 1.6, vitamineB1: 0.21, calcium: 8, omega3: 1.79, comments: "eeeeeeee", premierBooleen: false, optimize: false) ] static let list3 : [AlimentObject] = [ AlimentObject(nomAliment: "Avocat", poids: 100, calories: 147, proteines: 1.76, lipides: 13.80, glucides: 1.57, aRetinol: 0, aBetacarotene: 55, vitamineC: 5.49, vitamineB1: 0.05, calcium: 11.2, omega3: 0.08, comments: "aaaaaaaaa sdsddsdsd", premierBooleen: false, optimize: false), ] static let list4 : [AlimentObject] = [ AlimentObject(nomAliment: "Amandes", poids: 100, calories: 634, proteines: 21, lipides: 53, glucides: 8, aRetinol: 8, aBetacarotene: 1, vitamineC: 0.8, vitamineB1: 0.18, calcium: 248, omega3: 0.06, comments: "fffffff sdsddsdsd", premierBooleen: false, optimize: false) ] static let list5 : [AlimentObject] = [] static let listVide : [AlimentObject] = [] static let listDuJour = [list1, list2, list3, list4, list5] } class AlimentFunctions { // sommer des Float d'une macro du Menu et sortir un Float static func sumDUneMacroDuMenuToFloat(NameList list: [[AlimentObject]], macro: String) -> Float { var totalsection: Float = 0.0 var total: Float = 0.0 list.forEach { totalsection = 0 $0.forEach({ (aliment) in if let value = Mirror(reflecting: aliment).children.first(where: { $0.label == macro })?.value as? Float { totalsection += value } }) total += totalsection } return total } } class TotauxVitamineMineraux { static func DicoDesTotauxPaffonesEtNonPlaffonesDesVitamines(with menu: [[AlimentObject]], tableauDesNomsDesMacrosRetenues: [String], tableauDesValeursDesMacros: [String: Float]) -> [String: (Float, Float, Float, Float, Float)] { var dico: [String: (Float, Float, Float, Float, Float)]! for macro in tableauDesNomsDesMacrosRetenues { let premier = tableauDesValeursDesMacros[macro]! let second = AlimentFunctions.sumDUneMacroDuMenuToFloat(NameList: menu, macro: macro) let troisieme = second / tableauDesValeursDesMacros[macro]! * 100 var quatrieme = second if second > 100 { quatrieme = 100 } if second <= 100 { quatrieme = second } let cinquieme = quatrieme / tableauDesValeursDesMacros[macro]! * 100 dico[macro] = (premier, second, troisieme, quatrieme, cinquieme) } return dico } } let dico = TotauxVitamineMineraux.DicoDesTotauxPaffonesEtNonPlaffonesDesVitamines(with: Donnees.listDuJour, tableauDesNomsDesMacrosRetenues: TableauDesVitaminesRetenuesPourObjectifs, tableauDesValeursDesMacros: TableauDesBesoinsQuotidienEnVitaminesretenues) print(dico) The error is in this line: dico[macro] = (premier, second, troisieme, quatrieme, cinquieme)