Swift:错误:隐式展开可选值时意外发现nil
我得到了以下错误代码: 错误:执行被中断,原因:EXC\u错误\u指令 (代码=EXC_I386_INVOP,子代码=0x0)。这一过程被留在了最后阶段 在中断的地方,使用“threadreturn-x”返回到 表达式计算之前的状态 操场上说: 致命错误:隐式展开时意外发现nil 可选值:文件BilanDico-04.1,第137行 这是我的密码:Swift:错误:隐式展开可选值时意外发现nil,swift,xcode,Swift,Xcode,我得到了以下错误代码: 错误:执行被中断,原因:EXC\u错误\u指令 (代码=EXC_I386_INVOP,子代码=0x0)。这一过程被留在了最后阶段 在中断的地方,使用“threadreturn-x”返回到 表达式计算之前的状态 操场上说: 致命错误:隐式展开时意外发现nil 可选值:文件BilanDico-04.1,第137行 这是我的密码: import Foundation import UIKit let TableauDesBesoinsQuotidienEnVitaminesr
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)
<代码>导入基础
导入UIKit
let tableaudesbesoinsquotidienenviraminesretenues:[字符串:Float]=[
“aRetinol”:800,
“阿贝塔卡罗汀”:2100,
“维生素C”:80,
“维生素B1”:1.1,
“钙”:800,
“欧米茄3”:2
]
让TableAudesVitamineSretenuesAboutRobjections:[字符串]=[
“阿雷蒂诺”,
“阿贝塔卡罗汀”,
“维生素C”,
“维生素B1”,
“钙”,
“omega3”
]
类AlimentObject{
var id=UUID().uuistring
var nomAliment=“新食品”
变量POID:Float=100
var卡路里:浮动=0
变量proteines:Float=0
变量lipides:Float=0
变量glucides:Float=0
变量aRetinol:Float=0
变量aBetacarotene:Float=0
维生素C变种:浮动=0
维生素B1变种:浮动=0
变量:浮动=0
变量omega3:Float=0
var注释:String=“”
布林:布林
var优化:Bool
初始值(nomAliment:String,POID:Float,卡路里:Float,蛋白质:Float,脂质:Float,糖类:Float,槟榔醇:Float,阿贝他卡罗汀:Float,维生素C:Float,维生素B1:Float,钙:Float,omega3:Float,注释:String,premierBooleen:Bool,Optimized:Bool){
self.nomAliment=nomAliment
self.poid=poid
自我热量=卡路里
self.proteines=蛋白质
self.lipides=lipides
self.glucides=glucides
self.aRetinol=aRetinol
self.aBetacarotene=aBetacarotene
self.vitamineC=维生素c
self.vitamineB1=维生素b1
钙
self.omega3=omega3
self.comments=注释
self.booleen=false
self.optimize=false
}
便利初始化(){
self.init(nomAliment:“营养素初始”,POID:100,卡路里:0,蛋白质:0,脂质:0,葡萄糖酸:0,槟榔醇:0,阿贝他卡罗汀:0,维生素C:0,维生素B1:0,钙:0,omega3:0,注释:,premierBooleen:false,Optimized:false)
}
}
班级唐尼{
静态变量AlimentListWithSections=[[AlimentObject]]()
静态let列表1=[
营养对象(营养素:“白葡萄酒”,POID:100,卡路里:108,蛋白质:24,脂肪:1,糖类:0,槟榔醇:8,阿贝他卡罗汀:0,维生素C:0,维生素B1:0.08,钙:8,欧米茄3:0.03,注释:“SDD”,premierBooleen:false,optimize:false),
营养对象(营养素:“Avocat”,POID:100,卡路里:147,蛋白质:1.76,脂质:13.80,糖化物:1.57,槟榔醇:0,阿贝他卡罗汀:55,维生素C:5.49,维生素B1:0.05,钙:11.2,欧米伽3:0.08,注释:“AAAAAAAAAAA SDDSD”,premierBooleen:false,Optimized:false),
营养对象(营养素:“Amandes”,poids:100,卡路里:634,蛋白质:21,脂质:53,糖类:8,槟榔醇:8,阿贝他卡罗汀:1,维生素C:0.8,维生素B1:0.18,钙:248,omega3:0.06,注释:“FFFFF SDDSD”,premierBooleen:false,optimize:false)
]
静态let列表2=[
营养对象(正常饮食:“波夫隆黄”,POID:100,卡路里:29.2,蛋白质:1,脂质:5.42,糖化物:0.21,槟榔醇:0,阿贝他卡罗汀:120,维生素C:184,维生素B1:0.03,钙:11,omega3:0.02,注释:“lllllll SSSS”,premierBooleen:false,Optimization:false),
营养对象(营养素:“Saumon cru”,poids:100,卡路里:192,蛋白质:20.5,脂质:12.2,糖化物:0,槟榔醇:8,阿贝他卡罗汀:0,维生素C:1.6,维生素B1:0.21,钙:8,omega3:1.79,注释:“eeeeeeee”,premierBooleen:false,optimize:false)
]
静态let列表3:[AlimentObject]=[
营养对象(营养素:“Avocat”,POID:100,卡路里:147,蛋白质:1.76,脂质:13.80,糖化物:1.57,槟榔醇:0,阿贝他卡罗汀:55,维生素C:5.49,维生素B1:0.05,钙:11.2,欧米伽3:0.08,注释:“AAAAAAAAAAA SDDSD”,premierBooleen:false,Optimized:false),
]
静态let列表4:[AlimentObject]=[
营养对象(营养素:“Amandes”,poids:100,卡路里:634,蛋白质:21,脂质:53,糖类:8,槟榔醇:8,阿贝他卡罗汀:1,维生素C:0.8,维生素B1:0.18,钙:248,omega3:0.06,注释:“FFFFF SDDSD”,premierBooleen:false,optimize:false)
]
静态let列表5:[AlimentObject]=[]
静态let listVide:[AlimentObject]=[]
静态let listDuJour=[list1,list2,list3,list4,list5]
}
类函数{
//菜单和浮动菜单中的浮动
静态函数SUMDANEMOCRODUMENUTOFLOAT(名称列表:[[AlimentObject]],宏:字符串)->Float{
var totalsection:浮点=0.0
变量总计:浮动=0.0
list.forEach{
totalsection=0
$0.forEach({(赡养费)年)
如果let value=Mirror(反射:aliment).children.first(其中:{$0.label==macro})?.value为?Float{
totalsection+=值
}
})
总计+=总计截面
}
返回总数
}
}
类ToAuxVTamineReaux{
静态函数双代码ToTauExpaffoneSetNonplaffonesdesVitamines(带菜单:[[AlimentObject]],TableAudesNomsDesmarRestretenes:[String],TableAudesValersDesmacros:[String:Float])->[String:(Float,Float,Float,Float,Float,Float)]{
var dico:[字符串:(浮动,浮动,浮动,浮动)]!
对于TableAudesNomsDesmAcrosRetenes中的宏{