2014-09-21 14 views
10

Sto lavorando ai demo della tabella Swift e tutti sembrano avere lo stesso messaggio di errore in 6.0.1. Non sei sicuro di come affrontare questo:6.0.1 e modifiche alle tabelle "UILabel? Non ha un membro chiamato 'testo"

enter image description here

+1

Cercare "optionals" – Kevin

+1

ULLabel ha un membro chiamato testo. Ecco dove è confuso. –

+0

Sì, ma questo non è l'errore. L'errore è abbastanza chiaro 'UILabel?' (Nota il punto interrogativo) * non * ha un membro chiamato testo. – Kevin

risposta

19

provare questo:

cell.textLabel!.text = self.tableData[indexPath.row] 

e leggere questo articolo su optionals qui: Optionals in Swift

Aggiornamento:

Un approccio migliore è ora utilizzare:

cell.textLabel?.text = self.tableData[indexPath.row] 
+0

Grazie, anche questo ha funzionato: cell.textLabel.text? = self.tableData [indexPath.row] –

+0

Questo optionals, unwrapping,?,! è qualcosa che non ho mai visto prima. Mi piacerebbe vederlo rappresentato come una sorta di infografica. Grazie! LETTURA! :-) –

+0

Controlla il mio link. Qui trovi tutte le informazioni che ti servono :) – derdida

3

In Xcode 6.1.1 si deve scartare sia la cella e textLabel:!

cella .textLabel .text = "il testo"

0

Se si guarda la documentazione textLabel proprietà here, voi! lo troverà definito come:

var textLabel: UILabel? { get } 

Ciò indica che la proprietà è un Opzionale. Ciò significa che potrebbe contenere un valore valido o potrebbe essere un nulla. Se si è sicuri al 100% che il vostro cellulare avrà questo textLabel popolato, quindi è possibile utilizzare il metodo suggerito da derdida cioè:

cell.textLabel!.text = self.tableData[indexPath.row] 

Tuttavia, come Patrick Lynch ha giustamente sottolineato, si sono solo insediano per il futuro arresti anomali di run-time (bombe a orologeria) se lo fai a tutti gli Optionals che incontri. La migliore pratica è scrivere un codice che gestisca con garbo il caso in cui un Optional è nullo. In tal caso, l'intera espressione è pari a zero. Qualcosa di simile a questo:

cell.textLabel?.text = self.tableData[indexPath.row] 

Anche se non ho infografica per questo argomento, un ottimo write-up esiste here e si arriva fino a velocità in pochissimo tempo. Spero che aiuti.

Problemi correlati