Ich habe einenFinden Ansichten der Klasse Geschwister in Swift
class Fancy:UIButton
und ich möchte alle Geschwister Ansichten finden, die die gleiche Klasse.
Ich mache das
for v:UIView in superview!.subviews
{
if v.isKindOfClass(Fancy)
{
// you may want... if (v==self) continue
print("found one")
(v as! Fancy).someProperty = 7
(v as! Fancy).someCall()
}
}
es zuverlässig in Tests scheint zu funktionieren (keine Geschwister, viele, etc)
Aber es gibt eine Menge von "!" da drin.
Ist das der richtige Weg in Swift?
BTW hier ist eine coole Art, es mit Erweiterungen auf den großen Antworten unter
Pass in a type to a generic Swift extension, or ideally infer it
Force-Unwrapping ist gefährlich und sollte vermieden werden .. Wenn es fehlschlägt, stürzt man ab. Deine innere Kraft-Auspacken '(v wie! Fancy)' ist sicher, aber unelegant. –
Hi @DuncanC, du bist ziemlich sicher, dass es sicher ist ?? (Unelegant wir können später damit umgehen :)) – Fattie
Der innere Teil ist Kraft-Down-Casting, nicht Kraft-Unwrapping. Ich habe falsch gesprochen. Und ja, es ist sicher, da Sie es in einer if-Anweisung haben, die die Klasse von v überprüft –