En lisant l'exemple de code d'Apple, j'ai trouvé une syntaxe que je ne voyais pas, alors je l'ai recherchée.
Partie de l'exemple de code
for case let foundObject as VNRecognizedObjectObservation in results {
let bestLabel = foundObject.labels.first!
let objectBounds = foundObject.boundingBox
print(bestLabel.identifier, bestLabel.confidence, objectBounds)
}
J'étais intéressé par la première ligne.
for case let foundObject as VNRecognizedObjectObservation in results
Je comprends que je suis en train de parcourir la collection, mais case let x as T
était un mystère.
En passant, cet exemple de code est une application de reconnaissance d'image qui utilise le framework Vision
.
Il semble que les résultats de détection par "Vision" soient alignés dans "résultats".
J'ai exécuté le code simplifié et je l'ai vu fonctionner.
Xcode 12.1 Swift 5.3 macOS 10.15.7
Un tableau de types d'éléments incohérents
let values: [Any] = [ "1", 2, 3.4]
Traiter uniquement les "valeurs pouvant être converties en type Int" parmi les éléments du tableau
for case let number as Int in values {
print(number)
}
// Prints 2
Si vous souhaitez simplement obtenir le même résultat d'exécution, il existe probablement plusieurs autres approches. Cependant, il n'y a que l'exemple de code d'Apple, et je pense qu'il est implémenté avec une description très simple.
Recommended Posts