Я новичок в программировании на iOS, и я пытаюсь использовать новый язык Swift. У меня проблема/я не знаю, как в разборе JSON с Swift для использования iOS. Я уже использовал JSON в Android, так что я знаю, что JSON и ссылку правильно, но когда я пытаюсь следующий код (видел в учебнике) приложение, кажется, аварии и подчеркнул эту строку:JSON Parsing error with Swift
var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSDictionary
консоль возвращает мне эту ошибку:
The operation couldn’t be completed. (NSURLErrorDomain error -1005.) fatal error: unexpectedly found nil while unwrapping an Optional value
Вот весь код действия данной кнопки:
let urlAsString = "http://xxxxxxxxxx.altervista.org/App/_DD_/downloadutenti.php?email="+campoEmail.text+"&password="+campoPassword.text
let url = NSURL(string: urlAsString)!
let urlSession = NSURLSession.sharedSession()
println(url)
println(urlSession)
let jsonQuery = urlSession.dataTaskWithURL(url, completionHandler: { data, response, error -> Void in
if (error != nil) {
println(error.localizedDescription)
}
var err: NSError?
if(data != nil){
var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSDictionary
if (err != nil) {
println("JSON Error \(err!.localizedDescription)")
}
var jsonEmail = ""
if var jsonEmail: String! = jsonResult["email"] as? NSString{
}
else{
println("PROBLEM 1")
}
var jsonPassword = ""
if var jsonPassword: String! = jsonResult["pass"] as? NSString{
}
else{
println("PROBLEM 2")
}
dispatch_async(dispatch_get_main_queue(), {
self.scritta2.text = "Email: " + jsonEmail + " - Password: " + jsonPassword
})
}
})
jsonQuery.resume()
NB Я использую симулятор xcode6, и я точно знаю, что «переменные» campoEmail.text и campoPassword.text взяты в хорошем смысле.
JSON он должен вернуть:
[{"id":"1","email":"[email protected]","password":"pass","permessi":"1","stato":"Italia","citta":"Palermo","via":"Via Lincoln, 29","cap":"90100","telefono":"091xxxxxx"}]
редактирования.К @Neo ПОМОЩЬ: я редактировал все действия кнопки, как это, но код переходит в нуль проверяет данные .. В
let curURL: NSURL = NSURL(string: "http://fantacharleston.altervista.org/App/_DD_/[email protected]&password=pass")!
let curRequest: NSURLRequest = NSURLRequest(URL: curURL, cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 60)
NSURLConnection.sendAsynchronousRequest(curRequest, queue: NSOperationQueue.mainQueue()) { (response: NSURLResponse!, data: NSData?, error: NSError!) -> Void in
if (data != nil) {
if let jsonArray: NSArray = NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSArray? {
let jsonObject: NSDictionary? = jsonArray.objectAtIndex(0) as? NSDictionary
if (jsonObject != nil) {
NSLog("object: %@", jsonObject!)
let email: NSString? = jsonObject?.objectForKey("email") as? NSString
let password: NSString? = jsonObject?.objectForKey("password") as? NSString
if (email != nil && password != nil) {
dispatch_async(dispatch_get_main_queue(), {() -> Void in
self.scritta2.text = "Email: " + email! + " - Password: " + password!
})
}
}
}
}
else{
println("null")
}
}
Можете ли вы предоставить мне часть JSON, которую вы пытаетесь разобрать? –
Вы должны, как правило, включать в себя все сообщение об ошибке, которое вы получили. –
Я добавил то, что он должен отдать. @Neo –