2016-05-16 23 views
-1

辞書項目の値をラベルに割り当てようとしています。この辞書は配列内にあります。Swift - ラベルの辞書項目

私は同様にこのアイテムを印刷:

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

それが正しい値である

Optional(410056) 

を返します。しかし、私はオプション()がそこにあるのか分からない。

はとにかく私はそうのようなラベルにこの値を代入しようとすると:

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

私のコードは黒になり、私はそれを実行する場合にのみ、このエラーが発生します。

enter image description here

なぜ私はこのエラーを取得していますし、どのように私はラベルにこれを割り当てていますか?

+0

wsQAshowTagArray![0] ["LData1"] 'は' Int? 'で、文字列に整数を代入することはできません。 – kennytm

+0

ディクショナリアクセスは常にオプションを返します。どうして?キーが辞書になければ 'nil'を得るからです。 'nil'を返すためには、オプションの型の値を返す必要があります。 – vacawama

答えて

2

wsQAshowTagArray![0]["LData1"]は、オプションでIntです。そして、あなたはそのような文字列でそれを置くことができ

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

:あなたは!を付加することによって、それをアンラップを強制することができ

LData1.text = "\(someInt)" 

またはワンライナーとして:

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

に留意されたいです。 !を使用して強制アンラッピングしているので、このコードはクラッシュします。実際にはif letまたはguard letを代わりに使用する必要があります。オプションはスウィフト言語の基本的な部分です。 the docs on them(短いです)とお読みください。

+0

サイドノートでは、インスタンス変数とローカル変数は小文字で始まるはずですから、 'LData1'の名前を' lData1'に変更する必要があります。 –

関連する問題