Je parcourais cet extrait de code de l'une des questions de stackoverflow : obtenir des données d'en-tête à partir d'une réponse de demande dans swift
là, l'auteur de l'extrait a fait quelque chose comme ça
if let httpResponse = response as? HTTPURLResponse {
if let xDemAuth = httpResponse.allHeaderFields["X-Dem-Auth"] as? String {
// use X-Dem-Auth here
}
}
J'ai également vu du code où il y a des conditions if qui ressemblent à ceci
if userInfoResponse as? HTTPURLResponse != nil {
Je suis allé à la documentation de swift pour voir s'il existe une référence à une telle condition : https://docs.swift.org/swift-book/ReferenceManual/Statements.html mais je n'ai trouvé aucune référence à as. J'ai lu ce document ( https://www.programiz.com/swift-programming/if-else-statement )
Swift docs ne donne que cette description
The else clause of an if statement can contain another if statement to test more than one condition. An if statement chained together in this way has the following form:
if condition 1 {
statements to execute if condition 1 is true
} else if condition 2 {
statements to execute if condition 2 is true
} else {
statements to execute if both conditions are false
}
The value of any condition in an if statement must be of type Bool or a type bridged to Bool. The condition can also be an optional binding declaration, as discussed in Optional Binding.
Ce qui ressemble à la condition if en javascript. Quelqu'un peut-il m'expliquer la condition ci-dessus si autre? Comme quoi as?
dans la condition ci-dessus?
Cela pourrait être simplifié avec un exemple
let df:Any = 123
if let res = df as? String {
print(res)
}
else {
print("no") // prints
}
et
if let res = df as? Int {
print(res) // prints
}
else {
print("no")
}
BTw , votre code pourrait être
if let res = userInfoResponse as? HTTPURLResponse {
// use res
}
ou alors
if let _ = userInfoResponse as? HTTPURLResponse {
}
ou alors
if userInfoResponse is HTTPURLResponse {
}
à la place de
if userInfoResponse as? HTTPURLResponse != nil {
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots