2016-09-08 5 views
-1

Ich arbeite gerade an einer einfachen App, die meine Fähigkeiten und mein Verständnis von xcode und App-Entwicklung wirklich testen soll. Ich bin immer noch ein Anfänger, also ist es in erster Linie ein Lernwerkzeug sowie das Erstellen von Fähigkeiten. Wie auch immer, ich versuche, ein einfaches Login/Register zu implementieren, bevor ich zum nächsten View-Controller-Bildschirm gehe, wobei der Anmelde- und der Registrierungsbildschirm getrennt sind und Informationen in der App gespeichert werden, nicht zu phase oder icloud.NSUserdefaults Informationen von einem Viewcontroller zu einem anderen View Controller

In ViewController1.m, ich rufe für ViewController2.h:

#import "ViewController2.h" 

Dies spiegelt sich auch in ViewController2.m für ViewController1.h getan.

In ViewController1.mi nutzen NSUserDefaults als solche:

NSUserDefaults *defaults = [NSUserDefaults standarUserDefaults]; 

[defaults setObject:_usernameField2.text forKey:@"username"]; 
[defaults setObject:_passwordField2.text forKey:@"password"]; 
[defaults setBool:YES [email protected]"registered"]; 

[defaults synchronize]; 

Wenn das Programm ausgeführt wird, und ich bin in der Lage die Benutzer und durch segue Befehl registriert ich in der Lage bin zu dem nächsten View-Controller zu gehen:

[self performSegueWithIdentifier:@"loginScreen" sender:self]; 

Im Idealfall, wenn ich auf den ViewController2-Bildschirm zugreife, möchte ich die Informationen vom vorherigen viewcontroller (ViewController1) verwenden. Wenn ich jedoch versuche, die gespeicherten Informationen zu verwenden, quittiert das Programm die Informationen des vorherigen ViewControllers nicht.

-(void) checkCredintials 
{ 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

    if (![_usernameField1.text isEqualToString:[defaults objectForKey:@"username"]] && ![_passwordField1.text isEqualToString:[defaults objectForKey:@"password"]]) 

Ich habe andere Methoden versucht, wie die Verwendung von NSString aber ich glaube, ich bin entweder etwas einfach fehlt oder, wie ich bin versucht, den Code zu implementieren, kann ausgeschaltet sein. Ein Teil von mir denkt, dass es daran liegen könnte, dass ich eine neuere Version von xcode (4.6.3) ausführen und kodieren würde, aber das ist ein Menuettgedanke. Ich habe recherchiert und ich habe ein paar Wege ausprobiert, nur nicht sicher, was ich vermisse oder was ich hinzufügen oder ändern müsste. Jede Hilfe würde sehr geschätzt werden. Vielen Dank im Voraus

+0

Ihre Frage sagt nicht, was das Problem ist. "Bestätigt die Information nicht" ist bedeutungslos und das, wenn eine Aussage, die Sie gepostet haben, überhaupt nichts zu sagen hat, was das eigentliche Problem ist. Was erwartest oder willst du an dieser Linie passieren und was beobachtest du? Wenn usernameField1 ein Mitglied des zweiten View-Controllers ist, sowie der erste, und woher/wie erhält es seine Daten? Wenn dieser Code nicht View Controller 2 ist, warum zeigen Sie es dann an. – Gruntcakes

+0

Sie möchten Anmeldeinformationen nicht in 'NSUserDefaults' speichern. – Adrian

+0

Ich glaube, ich habe das Problem nicht wirklich ausgedrückt, aber was ich versuche zu erreichen ist, wenn der Benutzer ihre Informationen auf dem Registrierungsbildschirm (Benutzername und Passwort) eingibt, die in View Controller 1 in NSUserdefaults gespeichert sind. Was ich versuche zu tun ist, dass gespeicherte Informationen, die ich in NSUserdefaults von ViewController 1 zu den Standardeinstellungen in ViewController 2 für Benutzername und Passwort gespeichert habe. Insgesamt versuche ich zu verwenden, was ich in der ersten ViewController (Benutzername und Passwort) gespeichert) für den zweiten View-Controller. Ich bin mir auch nicht sicher, ob ich meine if-Aussage falsch machen kann, was ich versuche zu überprüfen –

Antwort

0

Legen Sie einen Haltepunkt oder NSLog die Werte der Textfelder und was für die Schlüssel in Standardwerte in checkCredintails-Methode gespeichert ist. Überprüfen Sie auch, ob Sie tatsächlich Werte für _usernameField2 und _passwordField2 speichern.

Die Art und Weise, wie Sie Daten von NSUserDefaults speichern und abrufen, sieht gut aus. Der Benutzer gibt den Benutzernamen und das Kennwort in ViewController1 ein und speichert ihn erneut in ViewController2, um ihn zu verifizieren. Sie sollten NSUserDefaults wahrscheinlich nicht verwenden, um Passwörter zu prüfen/zu speichern, aber ich denke, Sie tun dies nur als Beispiel.

Verwandte Themen