2016-11-30 55 views
0

包含在鍵「children」中的數組包含100個項目。swiftyJSON從數組中獲取隨機索引

是否有告訴SwiftyJSON抓取隨機索引?我試圖創建一個隨機數

var random = arc4random_uniform(24) 

但是當我插入隨機我得到了錯誤:

「不能與類型‘UInt32的’的指數下標型‘JSON’的價值」我也將它轉換爲NSNumber和同樣的東西,我完全失去了。

func getBackgoundImageData(completed: @escaping DownloadComplete) { 

    let imageURL = URL(string: IMAGE_URL)! 
    Alamofire.request(imageURL).responseJSON { response in 

     switch response.result { 

     case .success(let value): 

      let json = JSON(value) 
      if let url = json["data"]["children"][0]["data"]["preview"]["images"][0]["source"]["url"].string { 
       self._backgroundImageURL = url 
      } 

     case .failure(let error): 
      print(error) 
     } 
     completed() 
    } 
} 
+0

一般來說,當你使用像'[「數據「] [」children「] [0] [」data「] [」preview「] [」images「] [0] [」source「] [」url「]'你將會遇到問題,因爲Swift可能不是能夠正確推斷所有這些訪問的類型。將這條線分割成一系列有條件的downcasts,如果讓data = json [「data」]爲[String:Any] ...'等等,直到你得到你的最終數組,然後在那個 – Paulw11

回答

1

arc4random_uniform函數的輸入和返回值都是UInt32的。 Swift對數字類型很挑剔,並且不會像C族語言那樣在它們之間悄悄地轉換。你應該投隨機自我的詮釋:

var random = Int(arc4random_uniform(24)) 

(而你需要你的索引分解成你的數據結構,保羅在他的評論說。)

+0

giddy上使用隨機索引向上!老實說,我以爲我曾試圖把它作爲一個Int && NSNumber &&幾乎任何數字格式...感謝芽:) – Hurlarious

+0

NSNumber是數字類型不是在Objective-C中的對象的事實的人爲因素。你不能把數字值放入'NSArray'而不把它們轉換成'NSNumber's。在Swift中沒有真正的理由使用NSNumber。 –

+0

這是否解決了您的問題? –