2016-05-16 10 views
-1

Ich versuche, den Wert von Dictionary Element Label zuweisen. Dieses Wörterbuch befindet sich in einem Array.Swift - Wörterbuch Artikel zum Etikett

wenn ich drucke diesen Artikel wie folgt:

print(wsQAshowTagArray![0]["LData1"]); 

es gibt

Optional(410056) 

, die den richtigen Wert ist. Aber ich weiß nicht, warum das Optional() da ist.

Anyways, wenn ich versuche, diesen Wert zu einem Label zuweisen wie folgt:

self.LData1.text = wsQAshowTagArray![0]["LData1"] 

mein Code wird schwarz und ich diesen Fehler bekommen, nur wenn ich es laufen.

enter image description here

Warum bin ich diesen Fehler und wie ordne ich diese auf einem Etikett?

+0

Es scheint 'wsQAshowTagArray! [0] [" LData1 "]' ist ein 'Int?', Und Sie können einer Textzeichenfolge keine Ganzzahl zuweisen. – kennytm

+0

Wörterbuchzugriffe geben immer Optionale zurück. Warum? Weil Sie 'nil' erhalten, wenn der Schlüssel nicht im Wörterbuch vorhanden ist. Und um 'nil' zurückgeben zu können, muss ein Wert vom optionalen Typ zurückgegeben werden. – vacawama

Antwort

2

wsQAshowTagArray![0]["LData1"] ist eine optionale Int. Sie können durch ! anhängt unwrap es erzwingen:

let someInt = wsQAshowTagArray![0]["LData1"]! 

Dann könnte man es in einen String setzen wie so:

LData1.text = "\(someInt)" 

Oder als Einzeiler:

LData1.text = "\(wsQAshowTagArray![0]["LData1"]!)" 

Beachten Sie, dass Dieser Code wird abstürzen, weil Sie mithilfe von ! erzwingen. Sie sollten stattdessen if let oder guard let verwenden. Optionals sind ein grundlegender Teil der Swift-Sprache. Sie sollten the docs on them lesen (sie sind kurz).

+0

Nebenbei, Instanz und lokale Variablen sollten mit einem Kleinbuchstaben beginnen, also sollten Sie 'LData1' in' lData1' umbenennen (oder vielleicht etwas Beschreibenderes). –