У меня проблема .. У меня есть приложение, которое соединяется с базой данных с jSON, теперь проблема в том, что он не может найти элемент в ответе базы данных. Это код:Swift JSON Crash with Nil
func uploadtoDB(){
var SelectVehicle = save.stringForKey("SelectVehicleChoosed")
if SelectVehicle == nil {
var alertView:UIAlertView = UIAlertView()
alertView.title = "Submit Failed!"
alertView.message = "Please Select the Vehicle"
alertView.delegate = self
alertView.addButtonWithTitle("OK")
alertView.show()
}else {
var post:NSString = "vechicleNumber=\(SelectVehicle)"
NSLog("PostData: %@",post);
var url:NSURL = NSURL(string: "http://saimobileapp.com/services/sai_service_history.php?")!
var postData:NSData = post.dataUsingEncoding(NSASCIIStringEncoding)!
var postLength:NSString = String(postData.length)
var request:NSMutableURLRequest = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
request.HTTPBody = postData
request.setValue(postLength as String, forHTTPHeaderField: "Content-Length")
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.setValue("application/json", forHTTPHeaderField: "Accept")
var reponseError: NSError?
var response: NSURLResponse?
var urlData: NSData? = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&reponseError)
if (urlData != nil) {
let res = response as! NSHTTPURLResponse!;
NSLog("Response code: %ld", res.statusCode);
if (res.statusCode >= 200 && res.statusCode < 300)
{
var responseData:NSString = NSString(data:urlData!, encoding:NSUTF8StringEncoding)!
NSLog("Response ==> %@", responseData);
println(responseData)
var error: NSError?
let jsonData:NSDictionary = NSJSONSerialization.JSONObjectWithData(urlData!, options:NSJSONReadingOptions.MutableContainers , error: &error) as! NSDictionary
var serviceDate = ((jsonData as NSDictionary)["serviceHistory"] as! NSDictionary) ["serviceDate"] as! String
var serviceType = ((jsonData as NSDictionary)["serviceHistory"] as! NSDictionary) ["serviceType"] as! String
var kms = ((jsonData as NSDictionary)["serviceHistory"] as! NSDictionary) ["mileage"] as! String
var serviceLocation = ((jsonData as NSDictionary)["serviceHistory"] as! NSDictionary) ["serviceLocation"] as! String
var serviced:Void = save.setObject(serviceDate, forKey: "ServiceDateChoosed")
var servicet:Void = save.setObject(serviceType, forKey: "ServiceTypeChoosed")
var kmsc:Void = save.setObject(kms, forKey: "KmsChoosed")
var servicel:Void = save.setObject(serviceLocation, forKey: "ServiceLocationChoosed")
save.synchronize()
TableView.reloadData()
}
}
}
}
и это ответ
{"serviceHistory":[{"id":"2","vehicleNumber":"mh03aw0001","mobileNumber":"9503322593","customerName":"samsun","serviceDate":"2012-06-02","serviceType":"Paid Service","mileage":"65","serviceState":"Maharashtra","serviceLocation":"Lower Parel","PUC":""}]}
аварии приложение в строке var serviceDate = ((jsonData as NSDictionary)["serviceHistory"] as! NSDictionary) ["serviceDate"] as! String
с нуля, потому что я думаю, что он не может найти элемент.
Заранее благодарим за помощь.
Глядя на ваш JSON, '(jsonData as NSDictionary) [" serviceHistory "]' - это массив, а не словарь (он начинается с '[', а не '{'). – Moritz