this question on parsing JSON in Swift 3非常に参考になりましたが、私のJSON構造に「天気」キー(赤い矢印参照)の配列があることに気付きました。私はJSON出力の他の部分を解析することができましたが、この配列は問題を引き起こしました。 スウィフトのネスト配列を使用したJSONの解析3
質問:このJSONデータの他の部分で機能していた[String:Any]
パターンを使用できないのはなぜですか?
これはコンソールでのエラーです。「__NSSingleObjectArrayI(0x112e04be0)タイプの値を 'NSDictionary'(0x112e05108)にキャストできませんでした。
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: "http://api.openweathermap.org/data/2.5/weather?q=London,uk&appid=MYAPIKEY")!
let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
if error != nil {
print(error)
}else {
if let urlContent = data {
do {
let parsedData = try JSONSerialization.jsonObject(with: urlContent, options: .allowFragments) as! [String:Any]
print(parsedData)
let currentCondions = parsedData["main"] as! [String:Any]
for (key, value) in currentCondions {
print("\(key) - \(value)")
}
let locationInfo = parsedData["sys"] as! [String:Any]
for (key, value) in locationInfo {
print("\(key) - \(value)")
}
let weatherMain = parsedData["weather"] as! [String:Any]
print(weatherMain)
} catch {
print("JSON processessing failed")
}//catch closing bracket
}// if let closing bracket
}//else closing bracket
}// task closing bracket
task.resume()
}
}
問題は不明です。あなたのコードのどこに問題があるのですか?実際の問題は何ですか?コンパイルエラー?ランタイムエラー?予想外の結果ですか?具体的にする。 – rmaddy
コードと質問をコンソールに表示するように更新しました。私は "スレッド8:シグナルSIGABRT"コンソールで次のエラーを取得します。 '__NSSingleObjectArrayI'(0x112e04be0)型の値を 'NSDictionary'(0x112e05108)にキャストできませんでした。 – brickm