2017-03-02 65 views
0

我對swift很陌生,仍然試圖讓我的頭部在選項和投射方面得到解決。我聽說過很多有關避免使用!強制執行某些操作的問題,但我遇到了一個問題,我似乎無法讓編輯滿意。看看下面的塊斯威夫特避免使用`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); 
       } 
      } 
     } 

基本上我喂這所以我用[[String : AnyObject]]包含字符串或數組中的plist陣列。我的問題是設置as! String所有的數據,當我將它添加爲ExhibitionItem。有沒有辦法可以在我的if let聲明中設置對象的類型?

回答

2

你寫的代碼是一個等待發生的崩潰:如果有一個項目展覽[「標題」],但它不是一個字符串,那麼標題爲!以後的字符串會崩潰。你應該寫

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

等,然後作爲!不再需要了。

+0

啊完美謝謝你的男人。我正在嘗試諸如'let audio:String'之類的東西。我應該用'as'來看更多的例子 –