In diesem Tutorial werde ich zeigen, wie Sie die NSUserDefaults-Klasse verwenden, um Anwendungseinstellungen zu speichern und zu aktualisieren. In diesem Prozess erstellen wir eine Demo-App namens "Contact", in der ein vom Benutzer angegebenes Bild und Kontaktinformationen gespeichert werden.
Mit der Klasse NSUserDefaults können Sie Einstellungen und Eigenschaften speichern, die sich auf Anwendungs- oder Benutzerdaten beziehen. Sie können beispielsweise ein vom Benutzer festgelegtes Profilbild oder ein Standardfarbschema für die Anwendung speichern. Die Objekte werden in einem so genannten iOS-Standardsystem gespeichert. Das iOS-Standardsystem ist für den gesamten Code in Ihrer App verfügbar. Alle im Standardsystem gespeicherten Daten bleiben in Anwendungssitzungen erhalten. Dies bedeutet, dass die gespeicherten Daten auch dann verfügbar bleiben, wenn der Benutzer Ihre Anwendung schließt oder das Telefon neu startet, wenn Sie die App das nächste Mal öffnen!
Mit NSUserDefaults können Sie Objekte aus folgenden Klassentypen speichern:
Wenn Sie einen anderen Objekttyp wie einen UIImage speichern möchten, müssen Sie ihn normalerweise archivieren oder in eine Instanz von NSData, NSNumber oder NSString einpacken.
Nun, da Sie ein wenig wissen, was mit NSUserDefaults möglich ist, lernen Sie jetzt die Verwendung des Standardsystems mit einer einfachen Beispiel-App kennen, in der die Kontaktinformationen gespeichert werden.
Öffnen Sie Xcode und wählen Sie "Neues Xcode-Projekt erstellen". Wählen Sie eine View-basierte Anwendung aus und klicken Sie auf Weiter. Geben Sie einen Namen für Ihr Projekt ein (ich habe meinen? Kontakt?) Angerufen. Geben Sie Ihre Firmenkennung ein und stellen Sie sicher, dass Sie das iPhone für die Gerätefamilie auswählen, da wir eine iPhone-App erstellen werden. Wenn Sie fertig sind, klicken Sie auf Weiter. Wählen Sie einen Ort zum Speichern Ihres Projekts und klicken Sie dann auf Erstellen.
Im? Kontakt? Ordner im? Project Navigator? Klicken Sie auf ContactViewController.xib.
Ziehen Sie drei UITextFields aus der Bibliothek in die Ansicht und ordnen Sie sie wie folgt an. Machen Sie dasselbe mit einem UIImageView und zwei runden Rect-Buttons.
Klicken Sie auf Das erste Textfeld und geben Sie? Vorname? im Textfeld Platzhalter. Klicken Sie nun auf das zweite Textfeld und geben Sie? Nachname? im Textfeld Platzhalter. Klicken Sie zuletzt auf das dritte und letzte Textfeld und geben Sie "age" ein. im Textfeld Platzhalter. Wählen Sie für den Tastaturtyp Nummernblock aus, da Sie nur Ziffern zur Eingabe Ihres Alters benötigen.
Ändern Sie den Text der ersten Schaltfläche in "Speichern". und den Text der zweiten Schaltfläche zum Auswählen von Bild?.
Jetzt machen wir die Verbindungen. Xcode 4 bietet eine neue einfache und schnelle Möglichkeit, dies zu tun. Wählen Sie die mittlere Schaltfläche des Editors aus, um den Assistenteneditor anzuzeigen?.
Klicken Sie auf den ersten Namen TextField und ziehen Sie die STRG-Taste in die Benutzeroberfläche. Ein Popup-Fenster wird angezeigt. Geben Sie "firstNameTextField" ein. für den Namen und klicken Sie auf "Verbinden".
Machen Sie dasselbe mit dem Textfeld "Nachname und Alter" und der UIImageView, aber nennen Sie sie "lastNameTextField", "ageTextField" und "contactImageView". Für die Schaltflächen müssen wir die Verbindung in Aktion statt in Outlet ändern. Ziehen Sie also die STRG-Taste von der Schaltfläche Speichern in die Benutzeroberfläche, diesmal jedoch unter den geschweiften Klammern. Ändern Sie die Verbindung in Aktion und geben Sie "Speichern" ein. für den Namen. Machen Sie dasselbe mit der Schaltfläche "Bild auswählen", geben Sie jedoch diesmal ein. für den Namen. Nun sollte der Code von ContactViewController.h wie folgt lauten:
#einführen@interface ContactViewController: UIViewController IBOutlet UIImageView * contactImageView; IBOutlet UITextField * firstNameTextField; IBOutlet UITextField * lastNameTextField; IBOutlet UITextField * ageTextField; - (IBAction) save: (id) Absender; - (IBAction) selectImage: (id) Sender; @Ende
Nun sind wir mit der Schnittstelle fertig. Klicken Sie auf Erstellen und Ausführen, um zu sehen, ob alles in Ordnung ist. Geben Sie einen Text ein und schließen Sie die App. Wenn Sie die App erneut öffnen, werden Sie wahrscheinlich feststellen, dass der eingegebene Text noch vorhanden ist. Wenn ja, ist dies auf die integrierte Multitasking-Funktion von iOS zurückzuführen. Wenn Sie die App aus der Multitasking-Leiste löschen und die App erneut öffnen, sehen Sie, dass der eingegebene Text verschwunden ist. In diesem Tutorial werden wir NSUserDefaults verwenden, um die eingegebenen Informationen zu speichern, auch wenn Sie wirklich? Schließen Sie die App. Dadurch können die Daten über mehrere Sitzungen hinweg erhalten bleiben.
Wechseln Sie wieder in den Standard-Editor-Modus, damit Sie mehr Platz zum Arbeiten haben. Öffnen Sie ContactViewController.h und fügen Sie das UIImagePickerControllerDelegate und das UINavigationControllerDelegate hinzu.
Wenn Sie damit fertig sind, öffnen Sie ContactViewController.m, navigieren Sie zur ChooseImage-Aktion und ändern Sie den Code wie folgt:
- (IBAction) selectImage: (id) sender UIImagePickerController * picker = [[[[UIImagePickerController Alloc] init] Autorelease]; picker.delegate = self; picker.allowsEditing = YES; picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; [self presentModalViewController: Auswahlhilfe animiert: JA];
Zuerst erstellen wir einen UIImagePickerController, dann setzen wir den Delegaten auf "self". Als Nächstes aktivieren wir die Benutzerbearbeitung, setzen den Quelltyp auf die Fotobibliothek und zeigen ihn dem Benutzer mit einer Animation.
Fügen Sie unter Bildaktion auswählen die folgenden Delegierungsmethoden für die Bildauswahl ein:
#pragma mark - Image Picker Delegate - (void) imagePickerController: (UIImagePickerController *) picker didFinishPickingImage: (UIImage *) BildbearbeitungInfo: (NSDictionary *) processingInfo contactImageView.image = image; [picker dismissModalViewControllerAnimated: YES]; - (void) imagePickerControllerDidCancel: (UIImagePickerController *) picker [picker dismissModalViewControllerAnimated: YES];
In der ersten Methode setzen wir das Bild contactImageView auf das ausgewählte Bild und schließen den UIImagePickerController. Bei der zweiten Methode wird der UIImagePickerController nur verworfen.
Sie können Text mit der Funktion speichern: setObject: (id) forKey: (NSString *). Der Schlüssel muss ein bestimmter Schlüssel für das Objekt sein, das Sie speichern, da Sie auch diesen Schlüssel benötigen, um die gespeicherten Daten abzurufen. Sie können Ganzzahlen mit der Funktion: setInteger: (NSInteger) forKey: (NSString *) speichern. Um das Bild zu speichern, müssen Sie zunächst eine Instanz von NSData erstellen.
Gehen Sie zur Speicheraktion und ändern Sie den Code wie folgt:
- (IBAction) save: (id) sender // Tastatur ausblenden [firstNameTextField resignFirstResponder]; [lastNameTextField resignFirstResponder]; [ageTextField resignFirstResponder]; // Erstellen Sie Strings und Ganzzahlen, um die Textinformationen zu speichern. NSString * firstName = [firstNameTextField text]; NSString * lastName = [lastNameTextField-Text]; int age = [[ageTextField text] integerValue]; // Instanzen von NSData erstellen UIImage * contactImage = contactImageView.image; NSData * imageData = UIImageJPEGRepresentation (contactImage, 100); // Die Daten speichern NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; [Defaults setObject: firstName forKey: @ "firstName"]; [Standardwerte setObject: lastName forKey: @ "lastname"]; [Defaults setInteger: age forKey: @ "age"]; [Defaults setObject: imageData forKey: @ "image"]; [Standardeinstellungen synchronisieren]; NSLog (@ "Daten gespeichert");
Zuerst verstecken wir die Tastatur. Dann erstellen wir Strings aus dem Text, den Sie in das Feld für den Vor- und Nachnamen eingegeben haben. Wir erstellen auch eine Ganzzahl des von Ihnen eingegebenen Alters. Dann speichern wir das Bild von contactImageView als NSData-Objekt, da ein UIImage nicht direkt mit NSUserDefaults gespeichert werden kann. Dann speichern wir die Daten und rufen die Funktion standardUserDefaults auf, um Daten darin zu speichern. Zuletzt synchronisieren wir die standardUserDefaults-Datenbank.
Zum Schluss möchten wir die gespeicherten Daten abrufen. Wir machen dies in der viewDidLoad-Methode, da diese Methode beim Öffnen der Anwendung aufgerufen wird. Scrollen Sie nach unten zu "viewDidLoad". Methode, entfernen Sie das Kommentarzeichen und ändern Sie den Code wie folgt:
- (void) viewDidLoad // Abrufen der gespeicherten Daten, bevor die Ansicht geladen wird NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; NSString * firstName = [Standardwert objectForKey: @ "firstName"]; NSString * lastName = [default objectForKey: @ "lastname"]; int age = [Standardwerte integerForKey: @ "age"]; NSString * ageString = [NSString stringWithFormat: @ "% i", age]; NSData * imageData = [Standardwerte dataForKey: @ "image"]; UIImage * contactImage = [UIImage imageWithData: imageData]; // Aktualisieren Sie die Elemente der Benutzeroberfläche mit den gespeicherten Daten. FirstNameTextField.text = firstName; lastNameTextField.text = Nachname; ageTextField.text = ageString; contactImageView.image = contactImage; [super viewDidLoad];
Zuerst rufen wir erneut die standardUserDefaults-Funktion auf, damit wir die gespeicherten Daten abrufen können. Wir setzen den Vor- und Nachnamen in einen NSString. Obwohl das Alter eine Ganzzahl ist, erstellen wir eine Zeichenfolge, um es zu speichern, da wir den Text eines TextFields nicht direkt auf eine Ganzzahl setzen können. Wir fügen das Bild in ein NSData-Objekt ein und erstellen dann eine UIImage aus dem NSData-Objekt. Zum Schluss aktualisieren wir das UI-Element mit den gespeicherten Daten.
Nachdem die App fertig ist, erstellen Sie sie erneut und führen Sie sie erneut aus. Geben Sie Ihre Daten ein und wählen Sie ein Bild aus. Schließen Sie die App über die Multitaskingleiste und öffnen Sie die App erneut. Die Daten sollten diesmal noch vorhanden sein, und wenn ja, funktioniert unsere Demo-App!
Vielen Dank für das Lesen dieses Tutorials über NSUserDefaults! Wenn Sie Fragen oder Kommentare zu diesem Tutorial haben, lassen Sie sie in den Kommentaren weiter unten!
Und wenn Sie sich als iOS-Entwickler verbessern möchten, besuchen Sie die große Auswahl an iOS-App-Vorlagen auf Envato Market. Sie können sie als Basis für die Entwicklung eigener Apps verwenden, den qualitätsgeprüften Code überprüfen und daraus lernen.
Oder durchsuchen Sie die App-Entwicklungsdienste in Envato Studio, um eine App für Sie von Anfang bis Ende erstellen zu lassen!
App-Entwicklungsdienste auf Envato Studio