Ich mag einige Daten an den Server senden, aber wenn ich versuche, erhalte ich diese StörungWie verwendet man dispatch_async in Swift?
Ich denke, ein Problem mit der Absendung ist vielleicht richtig verwende ich es nicht, aber ich habe keine Erfahrung mit Xcode oder schnell, so weiß ich nicht, wie gut das Protokoll Fehlerfenster zu verstehen, ist jede Hilfe willkommen, thaks für ur Zeit
Dies ist mein Code:
func updateAndDismiss6() {
SharingManager.sharedInstance.FinalDiag = self.Diag.text!
SharingManager.sharedInstance.TreatmentDays = self.Trata.text!
SharingManager.sharedInstance.SystematicTreat = self.TrataSu.text!
SharingManager.sharedInstance.LidoPatch = self.ParcheLido.text!
}
@IBAction func IrResumen(sender: AnyObject) {
updateAndDismiss6()
let prefs = NSUserDefaults.standardUserDefaults()
let userid = prefs.stringForKey("userid")! as String
let Inicial = SharingManager.sharedInstance.Initials
let Edad = SharingManager.sharedInstance.Age
let Resultados = SharingManager.sharedInstance.Result
let Diagnostico = SharingManager.sharedInstance.FinalDiag
let Ttratamiento = SharingManager.sharedInstance.TreatmentDays
let TsUsado = SharingManager.sharedInstance.SystematicTreat
let Plidocaina = SharingManager.sharedInstance.LidoPatch
if (Inicial == "" || Edad == "" || Resultados == "" || Diagnostico == "" || Ttratamiento == "" || TsUsado == "" || Plidocaina == "" || userid == "") {
let alertView:UIAlertView = UIAlertView()
alertView.title = "No data"
alertView.message = "error de datos"
alertView.delegate = self
alertView.addButtonWithTitle("OK")
alertView.show()
}
else {
let url_servicio = "http://arasoftltda.com/grunenthal/app/muestra.php"
let request = NSMutableURLRequest(URL: NSURL(string: url_servicio)!)
request.HTTPMethod = "POST"
//let postString = "nombre=pruebafromios&[email protected]®istro=registro&esp=esp&pais=Colombia&ciudad=Cogua&contrasena=123"
let postString = "iniciales=\(Inicial)&edad=\(Edad)&resultado=\(Resultados)&diagnostico=\(Diagnostico)&dias=\(Ttratamiento)&tratamiento=\(TsUsado)&parche=\(Plidocaina)&id=\(userid)"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error -> Void in
if (error != nil){
print(error!.localizedDescription)
} else{
let nsdata:NSData = NSData(data: data!)
do{
let json = try NSJSONSerialization.JSONObjectWithData(nsdata, options: NSJSONReadingOptions.MutableContainers)
let id = json["id"] as! String
if (id != ""){
print (id)
dispatch_async(dispatch_get_main_queue()) {
[unowned self] in
self.performSegueWithIdentifier("Resumen", sender: self)}
}
}
catch{
print("Error del JSON")
let alertView:UIAlertView = UIAlertView()
alertView.title = "Fallo al enviar datos!"
alertView.message = "Error de conexion con el servidor"
alertView.delegate = self
alertView.addButtonWithTitle("OK")
alertView.show()
}
}
}
task.resume()
}
}
Nicht verwandt, aber ich würde in diesem Zusammenhang von der Verwendung von "unowned self" abraten. Wenn der View-Controller wirklich gelöscht werden könnte, würden Sie 'weak self' verwenden. Aber "unowned" kann dich mit einer baumelnden Referenz verlassen. Außerdem würde ich davon abraten, 'UIAlertView' zu verwenden. Heutzutage würden Sie 'UIAlertController' verwenden. – Rob
In Bezug darauf, warum Ihre JSON-Anfrage fehlschlägt, würde ich vorschlagen, dass Sie den 'postString' drucken und sicherstellen (a), dass keine dieser Variablen Optionals waren, die entpackt werden mussten; und (b) dass es keine nicht reservierten Zeichen (z. B. Interpunktion, Leerzeichen usw.) gab. Wenn Sie eine 'x-www-form-urlencoded'-Anfrage verfassen, würden Sie im Allgemeinen prozentual den Werten entkommen, nur um sicher zu sein. – Rob
thx für ur beraten pal –