Je suis nouveau à Swift et j'ai cherché quelques-unes à travers les réponses que j'ai vues à ce sujet, mais j'essaie de trouver comment corriger ce problème. J'ai un terrain de jeu Swift avec du code qui fonctionne bien et ne retourne pas cette erreur, mais a un code similaire dans un projet iOS qui renvoie cette erreur. Cela se produit lorsque je compare une valeur comptée de fibres à 5,5. La seule différence que je peux voir entre les 2 situations est que le code du terrain de jeu n'utilise pas une entrée de l'utilisateur d'un champ de texte où je convertis le texte en double. Je saisis une valeur comptée de fibres, et tout semble bien se passer.L'opérateur binaire '<' ne peut pas être appliqué à des opérandes de type 'Double?' et 'Double'
Cependant, dans le projet iOS, j'obtiens le message d'erreur ci-dessus, et je ne comprends pas comment le réparer, et surtout, pourquoi j'ai une erreur dans un jeu de codes mais pas dans l'autre. Il semble que je le ferais travailler dans les deux cas ou pas du tout. Merci d'avance.
Ce code fonctionne ok:
var ECA: Double
var FibersCounted: Double
var FieldsCounted: Double
var FieldArea: Double
var SampleVolume: Double
var ResultNumerator: Double
var ResultDenominator: Double
var SampleResult: Double
var SampleLimitofDetection: Double
ECA = 385
FibersCounted = 65
FieldsCounted = 100
FieldArea = 0.00785
SampleVolume = 1200
if FibersCounted <= 5.5 {
ResultNumerator = (ECA * (5.5/100))
ResultDenominator = (FieldArea * SampleVolume * 1000)
SampleResult = ResultNumerator/ResultDenominator
} else {
ResultNumerator = (ECA * (FibersCounted/FieldsCounted))
ResultDenominator = (FieldArea * SampleVolume * 1000)
SampleResult = ResultNumerator/ResultDenominator
}
Ce code renvoie le message d'erreur lorsque fibersCounted est comparé à 5,5 (à savoir "si fibersCounted < 5.5 {" ligne déclenche l'erreur:
@IBOutlet weak var sampleVolumeTextField: UITextField!
@IBOutlet weak var numberFibersCountedTextField: UITextField!
@IBOutlet weak var numberBlankFibersCountedTextField: UITextField!
@IBOutlet weak var numberFieldsCountedTextField: UITextField!
@IBOutlet weak var fiberDensityLabel: UILabel!
@IBOutlet weak var limitOfDetectionLabel: UILabel!
@IBOutlet weak var sampleResultLabel: UILabel!
@IBAction func calculatePressed(_ sender: Any) {
let sampleVolume = Double(sampleVolumeTextField.text!)
let fibersCounted = Double(numberFibersCountedTextField.text!)
let numberBlankFibersCounted = Double(numberBlankFibersCountedTextField.text!)
let fieldsCounted = Double(numberFieldsCountedTextField.text!)
var resultNumerator: Double
var resultDenominator: Double
var sampleResult: Double
var sampleLimitofDetection: Double
//calculate sample result based on actual fiber count or 5.5 fiber LOD value
if fibersCounted < 5.5 {
resultNumerator = (385 * (5.5/100))
resultDenominator = (7.85 * sampleVolume!)
let sampleResult = resultNumerator/resultDenominator
} else {
resultNumerator = (385 * (fibersCounted!/fieldsCounted!))
resultDenominator = (7.85 * sampleVolume!)
let sampleResult = resultNumerator/resultDenominator
}
salut tout le monde, merci beaucoup d'avoir pris le temps de lire et de répondre avec des conseils. Je vais regarder chaque réponse, puis voir ce qui fonctionne. Je reviendrai et je vous le ferai savoir. Merci encore pour toute l'aide! –
ok - donc j'ai pu utiliser "si laisser ..." pour le faire fonctionner. Merci encore à tous pour votre aide. Je vais également travailler sur l'amélioration de la syntaxe d'emballage/déballage. Merci pour vos suggestions sur tout cela. –