Ich arbeite an einer Wetter-App, die JSON-Daten analysiert und den Text meiner Beschriftung auf den Temp-Wert der JSON-Anfrage setzt. Ich habe den Wert von ID aus dem Wetter-Objekt-Array, aber die Temp ist nicht in einem Array, es ist nur ein Objekt. Kann mir bitte jemand sagen, wo ich falsch liege? Mein Wert repliziert nil, weil ich es nicht richtig hole. Hier ist mein Schnipsel und JSON. HierSwift und JSON analysieren nur ein Objekt und kein Array
@IBAction func getWeather(sender: AnyObject) {
let requestURL: NSURL = NSURL(string: "http://api.openweathermap.org/data/2.5/weather?lat=35&lon=139&appid=MYAPPID")!
let urlRequest: NSMutableURLRequest = NSMutableURLRequest(URL: requestURL)
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(urlRequest) {
(data, response, error) -> Void in
let httpResponse = response as! NSHTTPURLResponse
let statusCode = httpResponse.statusCode
if (statusCode == 200) {
print("JSON Downloaded Sucessfully.")
do{
let json = try NSJSONSerialization.JSONObjectWithData(data!, options:.AllowFragments)
if let today = json["weather"] as? [[String: AnyObject]] {
//this is pulling 4 key value pairs
for weather in today {
//this works
let id = weather["id"]?.stringValue
self.trumpDescription.text=id;
print(id)
//this is where I am confused it changes from an array to just an object
let temp = json["temp"] as? String
self.currentTempView.text=temp;
print(temp)
}
}
}
catch {
print("Error with Json: \(error)")
}
}
}
task.resume()
}`
ist die JSON:
{
"coord": {
"lon": 138.93,
"lat": 34.97
},
"weather": [
{
"id": 803,
"main": "Clouds",
"description": "broken clouds",
"icon": "04n"
}
],
"base": "cmc stations",
"main": {
"temp": 292.581,
"pressure": 1019.48,
"humidity": 99,
"temp_min": 292.581,
"temp_max": 292.581,
"sea_level": 1028.92,
"grnd_level": 1019.48
},
"wind": {
"speed": 5.36,
"deg": 237.505
},
"clouds": {
"all": 64
},
"dt": 1464964606,
"sys": {
"message": 0.0037,
"country": "JP",
"sunrise": 1464895855,
"sunset": 1464947666
},
"id": 1851632,
"name": "Shuzenji",
"cod": 200
}
Der Wert für 'temp' ist in einem Objekt. http://jsonlint.com/ – Adam
Temp ist nicht im Wetter ... es ist ein Objekt der wichtigsten –
werfen Sie einen Blick auf diese, [generierte Modell für openweathermap] (https://github.com/romainmenke/Jenerator/blob/ master/examples/openweather/openweathermap.swift) Es könnte Ihnen etwas Zeit sparen. –