Opérateur binaire ne peut pas être appliquée à des opérandes de type int et int? Swift 3
Je suis nouveau dans swift et j'ai essayer ce problème pour un couple d'heures. Ci-dessous mon code :
/* [1] error in this line */if filteredCustomReqList != nil {
for i in 0..<filteredCustomReqList?.count {
tempObj = filteredCustomReqList[i] as! [AnyHashable: Any]
bezeichString = tempObj?["bezeich"] as! String
specialRequestLabel.text = ("\(filteredString), \(bezeichString!)")
print (bezeichString!)
}
}
l'erreur de dire :
binary operator cannot be applied to operands of type int and int?
où :
var filteredCustomReqList: [Any]? /* = [Any]() */
si je l'aide var filteredCustomReqList: [Any] = [Any]()
l'erreur a disparu, mais mon si la condition est toujours vraie. Comment obtenir ce correctif ? J'ai lu cette mais ce n'est pas de même avec mon cas (ses int
et CGFloat
) .
Toute réponse et sugestion aidera pour moi. Merci D'Avance
- L'erreur semble être sur la
for
ligne, pas laif
ligne, correct?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser l'Option de Liaison
if let
à déballerfilteredCustomReqList
variable en Option.Vous devriez utiliser l'option de liaison de sorte que vous n'avez pas une option dans le
for
ligne.Encore mieux serait d'utiliser une meilleure
for
boucle:Mais pour ce faire, déclarer
filteredCustomReqList
correctement:Cela en fait un tableau qui contient les dictionnaires qui ont
String
clés etAny
valeurs.for
boucles n'a tout simplement pas ne rien lors de la tentative de réitérer unnil
séquence optionnellefor
boucle, plutôt que d'exiger un ensemble si l'instructionfor i in 0 ..< (myArray?.count ?? 0)
Cette ligne semble suspect:
En particulier,
filteredCustomReqList?.count
est de typeInt?
(Int
en option), en raison de chaînage optionnel. Qui est, si le tableaufilteredCustomReqList
est non-nul, il donne la valeur de sescount
de la propriété (c'est à dire, son nombre d'éléments). Mais sifilteredCustomReqList
estnil
, qui est propagé etfilteredCustomReqList?.count
estnil
trop.Afin d'englober les deux possibilités, Swift utilise le type facultatif
Int?
(qui peuvent représenter à la fois valideInt
valeurs etnil
).Il est pas l'équivalent à
Int
, et donc ne peut pas être utilisé dans une expression qui expexts deuxInt
s (comme la gamme dans votrefor
boucle).Vous ne pouvez pas avoir
Int?
comme la limite supérieure de votre boucle de gamme; il ne fait pas de sens. Vous devriez déballer le tableau avant de faire la boucle:Tout d'abord, comme d'autres réponses, vous devez déballer l'option de la valeur avant de l'utiliser.
Toujours garder à l'esprit, dans swift ne pas traiter en Option juste valeur d'un type spécial de la valeur elle-même. Ils sont tout à fait autre chose.
Une Option< T > est une structure de l'Option qui associe une valeur de T le cas présent, ce qu'il a regardé, est est:
En fait, dans Swift, vous pouvez mieux faire comme ci-dessus: