2017-12-20 6 views
0

Können Sie mir erklären, was diese Warnmeldung bedeutet?Swift Warnmeldung nicht klar

let x = cell.backgroundView!.layer.sublayers as! [CALayer] 

Zwangs Umwandlung von '[CALayer]?' zu "[CALayer]" entpackt nur Optionals; Wolltest du '!'

Antwort

2

Die Verwendung von Zwangsformaten macht keinen Sinn. sublayers gibt ein optionales Array zurück. Sie sollten das optionale Array sicher auspacken.

if let sublayers = cell.backgroundView?.layer.sublayers { 
    // do something with sublayers (which is a non-optional [CALayer]) 
} 

Beachten Sie auch die Verwendung von ? nach backgroundView statt !.

Bitte verbringen Sie Zeit zu lernen, wie man Optionals richtig zu verwenden, indem Sie die relevant sections in der Swift Buch lesen. Andernfalls wird Ihre App abstürzen. Siehe What does "fatal error: unexpectedly found nil while unwrapping an Optional value" mean? für viele Details zu diesem Ergebnis.

+0

Vielen Dank für Ihre Antwort. Wenn ich Ihren Vorschlag übernehme, erhalte ich einen (seltsamen?) Fehler im zweiten Befehl - lassen Sie x = cell.backgroundView! .layerunterseiten lassen Sie _ = x.map ({$ 0.removeFromSuperlayer()}), was als Fehlerwert gekennzeichnet ist vom Typ '[CALayer]' hat kein Mitglied 'removeFromSuperlayer' –

+2

Jetzt fragen Sie nach einer ganz anderen Frage. Wenn diese Antwort Ihre ursprüngliche Frage zu der Besetzung gelöst hat, geben Sie dies an, indem Sie diese Antwort akzeptieren. Dann posten Sie eine neue Frage zu Ihrem neuen Problem mit allen relevanten Codes und Fehlermeldungen – rmaddy

+0

Ich akzeptierte die Antwort (durch Klicken auf den Pfeil nach oben?). Das zweite Problem war mein ursprüngliches Problem, das ich durch die Besetzung (als!) Gelöst habe, aber immer noch auf die Warnung stieß. Danke für die Mühe, meine Probleme zu lösen. David –