2017-03-02 7 views
0

私はかなり迅速で、まだオプションと鋳造の周りに私の頭を手に入れようとしています。私は聞いたことがある/何かを強制的に!を使用して回避について多くを読んだが、私はエディタを幸せにするように見えることができない問題があります。基本的に私は[[String : AnyObject]]を使用していますので、文字列と配列が含まれています。このplistの配列を供給しています次のブロック「as」の鋳造を避けるスウィフト

if let exhibitions = array as? [[String : AnyObject]] { 
      for exhibition in exhibitions { 
       if let title = exhibition["title"], 
        let audio = exhibition["audio"], 
        let image = exhibition["image"], 
        let description = exhibition["description"] { 
         print(image) 
         let item = ExhibitionItem(title: title as! String, image: image as! [String], audio: audio as! String, description: description as! String) 
         exhibitionsArr.append(item); 
       } 
      } 
     } 

をチェックしてください。私の問題は、ExhibitionItemとして追加すると、すべてのデータに対してas! Stringを設定することです。 if letステートメントでオブジェクトのタイプを設定できる方法はありますか?

答えて

2

あなたのコードは書かれているのを待っています:item exhibition ["title"]がありますが、文字列ではない場合、タイトルは!ストリングは後でクラッシュします。あなたが書く必要があります

if let title = exhibition["title"] as? String, 
    let audio = exhibition["audio"] as? String, 
    let image = exhibition["image"] as? [String] 

等としてください!もはや必要ではありません。

+0

ああ完璧にありがとう。私は 'let audio:String'のようなものを試していました。私は 'as 'を使ってもっと多くの例を見るべきです –