2017-02-15 49 views
0

Ich habe diese Frage zu keinem Ende erforscht, aber weiterhin zu kämpfen. Ich habe den folgenden Code als cell.textLabel? .text beim Erstellen von Zellen geschrieben. Warum gibt es nur ein Fragezeichen für textLabel und nicht für Text?Tabellenansicht Zelle Optional - swift

Laut Text von Apple ist textLabel eine optionale Eigenschaft vom Typ UILabel und Text ist eine optionale Zeichenfolge, aber wir verwenden nur ein Fragezeichen? Warum nicht zwei Fragezeichen, eines für jedes optionale?

+0

Für welche Sprache ist das? Schnell? – GrandMasterFlush

+0

Ja swift language – TDG

+0

'textLabel? .text' bedeutet, dass überprüft wird, ob' textLabel' 'nil' ist oder nicht. Wenn es "nil" ist, gehe nicht weiter zu ".text" und wenn es nicht "nil" ist, gehe zu ".text". Dies gilt überall – SahyadriChava

Antwort

0

Die textLabel von UITableViewCell ist optional, da das Etikett, wenn eine benutzerdefinierten Zelle unter Verwendung fehlt.

Wenn Sie die Standardzelle mit einem der vier vordefinierten Stile verwenden textLabel garantiert zu existieren, und Sie können sicher die optionale auszupacken: cell.textLabel!.text

die Frage das erste Fragezeichen zu beantworten, für Optional Chaining erforderlich ist, jede optional, außer das letzte Element in einer Kette (foo.bar.baz) muss als optional markiert oder ausgepackt werden. Im Fall des letzten Elements kann der Compiler eine Typübereinstimmung direkt mit dem Element über das Gleichheitszeichen "verhandeln".

Verwandte Themen