我有一個使用Foursquare API下載JSON數據的應用程序。我使用NSURLSession
和dataTaskWithRequest
以完成塊方法來獲取數據。我得到的數據很好,但有時一個名爲groups
的嵌套數組可能是空的。而當我通過下面的JSON解析時,出於某種原因,我的條件語句沒有像我期待的那樣處理空數組。相反,陣列評價爲空,在進行if let...else
語句的「其他」部分,如果不是得來運行時錯誤陳述的:index 0 beyond bounds of empty array
Swift:如果let語句無法處理空數組
if let response: NSDictionary = data["response"] as? [String: AnyObject],
groups: NSArray = response["groups"] as? NSArray,
// Error here \|/ (sometimes groups array is empty)
dic: NSDictionary = groups[0] as? NSDictionary,
items: NSArray = dic["items"] as! NSArray {
}
else {
// Never gets here. Why?
// IF the groups array is empty, then the if let should return
// false and drop down to the else block, right?
}
我是比較新的雨燕,誰能告訴我這是爲什麼發生的以及我能做些什麼來解決這個問題?由於
你嘗試nsnull檢查陣列響應對象的值? – Loxx
意思是實際測試類類型NSNull? – Loxx
我知道我可以這樣做,我只是想在這裏理解Swift。在我看來,如果它是空的(意思是錯誤的),它會這樣評價。而且,如果語句通常會這樣做,他們就會下降到else塊。我想如果讓Swift的話,我會有點困惑。 –