0
請不要回答我,我是一頭驢子......但是我瘋狂地將一個項目從Swift 1.2移植到Swift 3我試圖自己學習)。 問題是,我遇到了一個我無法理解的問題:填充json pickerView錯誤意外發現零,同時展開一個可選值
我正在閱讀Web上的JSON以檢索某些類別以加載到Picker視圖,但是當我嘗試時該應用崩潰序列化JSON
/////////////// PICKER VIEW
func populatePicker(){
let urlCat = URL(string: "http://www.direttaweb.it/geoApp/html5/JSON_cat.php)");
let dataCat = try? Data(contentsOf: urlCat!);
var errorCat: NSError?
do {
/* HERE CRASH -> */ if let jsonObjectCat = try JSONSerialization.jsonObject(with: dataCat!, options: []) as? [String: AnyObject] {
// parse JSON
if let jsonObjectCat = jsonObjectCat as? [String: AnyObject] , errorCat == nil,
let jsonDataCat = JSONValue.fromObject(jsonObjectCat as AnyObject)?["data"]?.array {
for categoriaJSON in jsonDataCat {
if let categoriaJSON = categoriaJSON.array,
// 5
let categoria = Categoria.fromJSONCAT(categoriaJSON) {
categorie.append(categoria)
}
}
}
self.pickerCategorie.delegate = self
self.pickerCategorie.dataSource = self
}
}catch{
print(errorCat!)
}
}
奇怪的是,幾行以上,我做同樣的事情與一個函數,它幾乎是相同的(除了我填充所述陣列)另一個目的和我沒有問題... 請讓我知道我犯了什麼錯誤!
'dataCat'是'nil',因爲'Data(contentsOf:urlCat!);'失敗並拋出。 – shallowThought
在Swift 3中,JSON字典的表示是'[String:Any]',並且強烈建議您不要使用同步的'Data(contentsOf'從遠程URL加載數據。 – vadian
他們也刪除了我想要的循環的C風格去死! – Ast