Hallo zusammen!
Meine App soll an ein Benutzerkonto einer größeren Webanwendung gekoppelt werden - d.h. für einen Benutzer wird in der Webanwendung ein Zugriffscode erstellt, dieser wird in der App eingegeben, die App holt sich die Benutzerdaten von der Webanwendung. Funktioniert FAST perfekt, aber...
Alles anzeigen
Wenn man nun den Ausgaben in der Konsole folgt....
Task ausgeführt
in getItems() vor der Rückgabe heisst der Kunde
Der Kunde heisst
Fehler im Code OLE-O5AZOY1JOW59
Pairing missglückt
Direkt nach dem Lesen heisst der Kunde Silzer
in parseJson() heisst der Kunde Silzer
in getItems() heisst der Kunde Silzer
sieht man, dass in der Funktion getItems() ZUERST das Objekt Kunde zurückgegeben wird (welches zu diesem Zeitpunkt aber noch leer ist), DANN ERST wird die Funktion parseJson() aufgerufen und das Objekt mit Inhalten gefüllt.
Das ist insofern unpraktisch, weil ich gerne in der zuallererst aufgerufenen Funktion verifyCodeFromWebApp() gerne eine Rückmeldung hätte, ob der vom Benutzer eingegebene Zugangscode richtig war - in diesem Fall soll nämlich der Benutzer dazu aufgerufen werden ein Benutzerpasswort für die App auf diesem Gerät festzulegen - bei falschem Zugangscode aber nicht.
Im Prinzip muss das hier erhaltene Objekt kunde :
zurück an verifyCodeFromWebApp oder es müsste eine Boolean-Variable zurückgegeben werden abhängig davon, ob hier die Funktion parseJson() Erfolg hatte oder nicht.
Ich habe versucht den Code hier und da etwas umzustellen, stehe aber irgendwie auf dem Leitung...
Meine App soll an ein Benutzerkonto einer größeren Webanwendung gekoppelt werden - d.h. für einen Benutzer wird in der Webanwendung ein Zugriffscode erstellt, dieser wird in der App eingegeben, die App holt sich die Benutzerdaten von der Webanwendung. Funktioniert FAST perfekt, aber...
Quellcode
- class ConnectionToMysql {
- var zugriffscode = ""
- var serverUrl = ""
- func verifyCodeFromWebApp(Code: String)->Int {
- zugriffscode = Code
- let kunde = self.getItems()
- print("Der Kunde heisst \(kunde.nachname)")
- if kunde.nachname != "" {
- print ("Pairinggcode erkannt \(Code)")
- return 1
- } else {
- print("Fehler im Code \(Code)")
- return 0
- }
- }
- func getItems() -> Kunde {
- var kunde = Kunde()
- serverUrl += "meine_beispieldomain.php?aktion=new_device&zugriffscode=\(zugriffscode)"
- print(serverUrl)
- let url = URL(string: serverUrl)
- if let url = url {
- let session = URLSession(configuration: .default)
- let task = session.dataTask(with: url, completionHandler: {
- (data, response, error) in
- if error == nil {
- // Datenübertragung möglich
- kunde = self.parseJson(data: data!)
- print("in getItems() heisst der Kunde \(kunde.nachname)")
- } else {
- print("Etwas lief schief \(error!)")
- }
- })
- print("Task ausgeführt")
- task.resume()
- }
- print("in getItems() vor der Rückgabe heisst der Kunde \(kunde.nachname)")
- return kunde
- }
- func parseJson(data:Data) -> Kunde {
- var kunde = Kunde()
- do {
- let jsonArray = try JSONSerialization.jsonObject(with: data, options: []) as! [Any]
- // Weil unsere Antwort vom Srever ein Array ist (wenn auch mit nur einem Element), müssen wir durchiterieren
- for jsonResult in jsonArray {
- let jsonDict = jsonResult as! [String: String]
- kunde.ID = Int(jsonDict["ID"]!)!
- kunde.nachname = jsonDict["nachname"]!
- print("Direkt nach dem Lesen heisst der Kunde \(kunde.nachname)")
- kunde.vorname = jsonDict["vorname"]!
- kunde.geburtsdatum = jsonDict["geburtsdatum"]!
- kunde.strasse = jsonDict["strasse"]!
- kunde.plz = jsonDict["plz"]!
- kunde.ort = jsonDict["ort"]!
- kunde.telefonnummer = jsonDict["telefonnummer"]!
- kunde.telefonnummer2 = jsonDict["telefonnummer2"]!
- kunde.mobil = jsonDict["mobil2"]!
- kunde.mobil2 = jsonDict["mobil"]!
- kunde.email = jsonDict["email"]!
- kunde.fax = jsonDict["fax"]!
- }
- } catch {
- print ("Es ist etwas schief gelaufen \(error)")
- }
- print("in parseJson() heisst der Kunde \(kunde.nachname)")
- return kunde
- }
- }
Task ausgeführt
in getItems() vor der Rückgabe heisst der Kunde
Der Kunde heisst
Fehler im Code OLE-O5AZOY1JOW59
Pairing missglückt
Direkt nach dem Lesen heisst der Kunde Silzer
in parseJson() heisst der Kunde Silzer
in getItems() heisst der Kunde Silzer
sieht man, dass in der Funktion getItems() ZUERST das Objekt Kunde zurückgegeben wird (welches zu diesem Zeitpunkt aber noch leer ist), DANN ERST wird die Funktion parseJson() aufgerufen und das Objekt mit Inhalten gefüllt.
Das ist insofern unpraktisch, weil ich gerne in der zuallererst aufgerufenen Funktion verifyCodeFromWebApp() gerne eine Rückmeldung hätte, ob der vom Benutzer eingegebene Zugangscode richtig war - in diesem Fall soll nämlich der Benutzer dazu aufgerufen werden ein Benutzerpasswort für die App auf diesem Gerät festzulegen - bei falschem Zugangscode aber nicht.
Im Prinzip muss das hier erhaltene Objekt kunde :
Ich habe versucht den Code hier und da etwas umzustellen, stehe aber irgendwie auf dem Leitung...