2017-06-20 14 views
-2

私はこのようにサーバーから文字列値を得ました。Swift 3:オプション(オプション(文字列値))からの読み取り方法(オプション)?

let filename = "\(eventList[index]["filename"])" 

しかし、私はオプション(オプション(のstringValue))で値を得ました。 だから私はこれをこのように変更しました。

let filename = "\(eventList[index]["filename"]!)" 

は、それから私は、オプション(のstringValue)で値を得ました。 このエラーはこれ以上解決できません。 オプションを付けずにファイル名を読み取るにはどうすればよいですか?

+1

のためにいずれかを使用し、より「**!**を」安全性確認(if-letまたは他の変異体)を使用することをお勧めします。ただし、let **構文の場合は**を使用する方が良いでしょう。 –

+0

アンラップ - 別名を適切に管理します。 – vadian

+0

ご協力いただきありがとうございます! – LoveCode

答えて

0

使用if-let構文任意アンラップする:

if let fileName = eventList[index]["filename"] { 
    // use fileName 
} 
0

eventList[index]が指定されたインデックスで配列項目にアクセスします。あなたが参照しているアイテムはオプションの辞書なので、辞書アイテムにアクセスする前にアンラップする必要があります:eventLists[index]!(それが存在し、それ以外の場合はクラッシュすると仮定します)

あなたのリストは、あなたが希望Stringオブジェクトを取得します有効であると仮定し

eventLists[index]!["fileName"]! 

:オプションとしてもです。

私はブラケット終了後に防止クラッシュ

関連する問題