JSONデータを解析しようとしています。私ができることはJSONデータをNSDataファイルとして保存することです。それから私はNSDictionaryとしてそれを読むことができ、それぞれのテキストフィールドにいくつかの値を設定します。私ができないことは、JSONの値をそれぞれのテキストフィールドに直接配置することです。データのソースはOpen Weather Mapです。それは私のためにはあまり重要ではありません。 JSON解析を実行するためのデータが必要です。とにかく、以下は私が持っているものです。Swift:JSONディクショナリ値の解析
@IBOutlet weak var coordField1: UITextField!
@IBOutlet weak var countryField1: UITextField!
@IBOutlet weak var ideeField1: UITextField!
@IBOutlet weak var nameField1: UITextField!
@IBOutlet weak var cntField1: UITextField!
@IBOutlet weak var codField1: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
enum JSONError: String, ErrorType {
case NoData = "ERROR: no data"
case ConversionFailed = "ERROR: conversion from JSON failed"
}
let urlPath = "http://api.openweathermap.org/data/2.5/forecast/city?id=524901&APPID=fb1b5dcb756e9a52c49ee6377a02d879"
guard let endpoint = NSURL(string: urlPath) else { print("Error creating endpoint");return }
let request = NSMutableURLRequest(URL:endpoint)
NSURLSession.sharedSession().dataTaskWithRequest(request) { (data,response,error) -> Void in
do {
guard let dat = data else { throw JSONError.NoData }
guard let jsonDict = try NSJSONSerialization.JSONObjectWithData(dat,options:[]) as? NSDictionary else { throw JSONError.ConversionFailed }
//print(json)
if let items1 = jsonDict["city"] as? NSDictionary {
if let a = items1["coord"] {
if let lat = a["lat"] as? NSNumber {
print("\(lat.stringValue)") // It prints "55.75222"
self.coordField1.text = "lat: " + lat.stringValue as String + " "
}
if let lon = a["lon"] as? NSNumber {
print("\(lon.stringValue)") // √
self.coordField1.text = self.coordField1.text! + "lon: " + lon.stringValue as String
}
}
}
let jdata:NSData = NSKeyedArchiver.archivedDataWithRootObject(jsonDict)
jdata.writeToFile(self.filePath1(), atomically:true) // saving JSON as an NSData file
} catch let error as JSONError {
print(error.rawValue)
} catch {
print(error)
}
}.resume()
}
}
Xcodeは、各テキストフィールドの前に自分自身を置くことを余儀なくされました。私は理由をイメージすることができます。とにかく、空のテキストフィールドがあります。アプリケーションがクラッシュすることはありません。私は間違って何をしていますか?
ありがとうございました。
実際にコードがテキストを設定していることを確認しましたか?もし成功すれば成功し、実際には値はフィールドに設定されていますか? – Shripada
Que !?私の質問はなぜ私のテキストフィールドに値が設定されていないのですか? –
私はそれを理解しています。私の質問は、その中に印刷することができますあなたのテキスト設定コードが存在するステートメントは、制御がそこに来ることを確認する場合は?とにかく文字列が必要なので、NSNumberへの型キャストは不要です。 – Shripada