Hallo zusammen,
ich bin neu in der iOS Entwicklung und möchte für ein Studium Projekt eine App entwickeln, die einen Login beinhaltet. Es ist also hauptsächlich erstmal nur wichtig, dass es funktioniert, nicht wie sicher das ganze ist oder ähnliches, da ich die App vermutlich nur ein mal präsentiere und nicht im Store hochladen werde. Die eingegebenen Login Daten sollen an eine externe PHP Datei geschickt werden, welche diese Daten dann anhand einer MySQL Datenbank überprüft und dementsprechend zurück gibt, ob es geklappt hat oder nicht. Wenn ja soll zur nächsten View gewechselt werden und wenn nicht soll eine entsprechende Meldung ausgegeben werden.
Noch was allgemeines: Ich benutze Xcode 7.3 und programmiere in Objective-c
Also ich habe jetzt einen "LoginViewController". Dort habe ich zwei Textfelder und einen Login Button und diesen habe ich mit einer IBAction verknüpft. Diese Methode sieht bis jetzt so aus:
In der "login_done" Variable steht also jetzt entweder true oder false. Das klappt auch erstmal soweit. Jetzt möchte ich allerdings prüfen, was von beiden in "login_done" steht und dementsprechend handeln. Ich habe mir jetzt schon einen zweiten View Controller erstellt, den ich DashboardViewController genannt habe. Auf diesen soll man kommen, wenn in der "login_done" variable true steht. Das hatte ich mit folgendem Code vor:
Ich habe es zuerst in Zeile 29 gepackt, also noch in den Block. Da bekomme ich jetzt aber folgenden Fehler:
Ich schätze also mal es muss außerhalb des Blocks sein. Da habe ich allerdings jetzt das Problem, dass ich nicht weiß, wie ich außerhalb des Blocks auf die Variable "login_done" zugreifen kann.
Ich würde mich freuen wenn ihr mir helfen könntet es richtig zu machen.
Viele Grüße
ich bin neu in der iOS Entwicklung und möchte für ein Studium Projekt eine App entwickeln, die einen Login beinhaltet. Es ist also hauptsächlich erstmal nur wichtig, dass es funktioniert, nicht wie sicher das ganze ist oder ähnliches, da ich die App vermutlich nur ein mal präsentiere und nicht im Store hochladen werde. Die eingegebenen Login Daten sollen an eine externe PHP Datei geschickt werden, welche diese Daten dann anhand einer MySQL Datenbank überprüft und dementsprechend zurück gibt, ob es geklappt hat oder nicht. Wenn ja soll zur nächsten View gewechselt werden und wenn nicht soll eine entsprechende Meldung ausgegeben werden.
Noch was allgemeines: Ich benutze Xcode 7.3 und programmiere in Objective-c
Also ich habe jetzt einen "LoginViewController". Dort habe ich zwei Textfelder und einen Login Button und diesen habe ich mit einer IBAction verknüpft. Diese Methode sieht bis jetzt so aus:
Quellcode: LoginViewController.m
- - (IBAction)loginBtnTouched:(id)sender {
- NSURLSession *session = [NSURLSession sharedSession];
- NSString *url = [NSString stringWithFormat:@"http://www.meinedomain.net/iOS/meineApp/checkUserData.php?username=%@&passwort=%@", _usernameField.text, _passwordField.text];
- NSURLSessionDataTask *dataTask = [session dataTaskWithURL:[NSURL URLWithString:url] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error){
- NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
- NSString *login_done = [json valueForKey:@"login_done"];
- NSLog(@"%@", login_done);
- }];
- [dataTask resume];
- }
In der "login_done" Variable steht also jetzt entweder true oder false. Das klappt auch erstmal soweit. Jetzt möchte ich allerdings prüfen, was von beiden in "login_done" steht und dementsprechend handeln. Ich habe mir jetzt schon einen zweiten View Controller erstellt, den ich DashboardViewController genannt habe. Auf diesen soll man kommen, wenn in der "login_done" variable true steht. Das hatte ich mit folgendem Code vor:
Ich habe es zuerst in Zeile 29 gepackt, also noch in den Block. Da bekomme ich jetzt aber folgenden Fehler:
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIKeyboardTaskQueue waitUntilAllTasksAreFinished] may only be called from the main thread.'
Ich schätze also mal es muss außerhalb des Blocks sein. Da habe ich allerdings jetzt das Problem, dass ich nicht weiß, wie ich außerhalb des Blocks auf die Variable "login_done" zugreifen kann.
Ich würde mich freuen wenn ihr mir helfen könntet es richtig zu machen.
Viele Grüße