새로운 iOS 언어를 사용하고 있지만 문제가 발생합니다. 다음과 같이 JSON을 구문 분석합니다.
{
"coord":{
"lon":-0.13,
"lat":51.51
},
"sys":{
"message":0.1947,
"country":"GB",
"sunrise":1404964557,
"sunset":1405023356
},
"weather":[
{
"id":501,
"main":"Rain",
"description":"moderate rain",
"icon":"10d"
}
],
"base":"cmc stations",
"main":{
"temp":291.87,
"pressure":1018,
"humidity":87,
"temp_min":287.15,
"temp_max":295.45
},
"wind":{
"speed":3.1,
"deg":350,
"var_beg":320,
"var_end":30
},
"rain":{
"3h":0.5
},
"clouds":{
"all":75
},
"dt":1404999902,
"id":2643743,
"name":"London",
"cod":200
}
일기 예보 서비스에서 JSON을 얻었지만 지금까지 다음 방법을 만들었습니다.
func getWeatherFinished(json:NSDictionary) {
if (json != nil) {
var weather: NSArray = json.objectForKey("weather") as NSArray
var weatherDict: NSDictionary = weather.objectAtIndex(0) as NSDictionary
var weatherConditions: NSString = weatherDict.objectForKey("description") as NSString
var mainDict: NSDictionary = json.objectForKey("main") as NSDictionary
var temp: NSString = mainDict.objectForKey("temp") as NSString
var humidity: NSString = mainDict.objectForKey("humidity") as NSString
var minTemp: NSString = mainDict.objectForKey("temp_min") as NSString
var maxTemp: NSString = mainDict.objectForKey("temp_max") as NSString
var windDict: NSDictionary = json.objectForKey("wind") as NSDictionary
var speed: NSString = windDict.objectForKey("speed") as NSString
var deg: NSString = windDict.objectForKey("deg") as NSString
}
}
그러나 앱을 실행하면 충돌이 발생하고 이유를 모르겠습니다. 내 코드에 무엇이 잘못 되었나요? 왜 충돌이 발생합니까?
오류 스크린 샷 :
JSON을 받으면 다음 코드를 작성했습니다.
func connectionDidFinishLoading(connection: NSURLConnection!) {
var json: AnyObject! = NSJSONSerialization.JSONObjectWithData(receiveData, options: NSJSONReadingOptions(1), error: nil)
if let jsonDict = json as? NSDictionary {
getWeatherFinished(json as NSDictionary)
}
}
JSON이 nil이 아니고 사전이 될 수 있는지 확인하십시오.
func connectionDidFinishLoading(connection: NSURLConnection!) {
var json: AnyObject! = NSJSONSerialization.JSONObjectWithData(receiveData, options: NSJSONReadingOptions(1), error: nil)
if let jsonDict = json as? NSDictionary{
getWeatherFinished(json)
}
}
이 줄은 'temp'키가있는 개체가 NSString이 아니기 때문에 충돌합니다.
var temp: NSString = mainDict.objectForKey("temp") as NSString
json에서 숫자로 보이므로 대신 다음을 시도해 볼 수 있습니다.
var tempNum: NSNumber = mainDict.objectForKey("temp") as NSNumber
var temp: NSString = tempNum.stringValue()
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다