iOS SDK Lucrul cu NSUserDefaults

În acest tutorial voi demonstra modul de utilizare a clasei NSUserDefaults pentru a salva și actualiza setările aplicației. În acest proces, vom construi o aplicație demo numită "Contact", care va stoca o imagine și informații de contact furnizate de utilizator.

Ce este clasa NSUserDefaults??

Cu ajutorul clasei NSUserDefaults, puteți salva setările și proprietățile legate de datele de aplicație sau de utilizator. De exemplu, puteți salva o imagine profilată setată de utilizator sau o schemă de culoare implicită pentru aplicație. Obiectele vor fi salvate în ceea ce este cunoscut sub numele de sistemul implicit de iOS ?. Sistemul implicit pentru iOS este disponibil în întregul cod din aplicația dvs. și orice date salvate în sistemul implicit vor persista prin sesiunile de aplicații. Aceasta înseamnă că, chiar dacă utilizatorul îți închide aplicația sau repornește telefonul, datele salvate vor fi în continuare disponibile la următoarea deschidere a aplicației!

Cu NSUserDefaults puteți salva obiecte din următoarele tipuri de clase:

  • NSData
  • NSString
  • NSNumber
  • NSDate
  • NSArray
  • NSDictionary

Dacă doriți să stocați orice alt tip de obiect, cum ar fi un UIImage, va trebui de obicei să îl arhivați sau să-l înfășurați într-o instanță NSData, NSNumber sau NSString.

Acum că știți un pic despre ceea ce se poate face cu NSUserDefaults, să sară în învățarea cum să utilizați sistemul implicit cu o aplicație simplă de probă care va stoca informațiile de contact.

Pasul 1: Crearea proiectului

Deschideți Xcode și selectați? Creați un nou proiect Xcode ?. Selectați o aplicație bazată pe vizualizare și faceți clic pe Următorul. Introduceți un nume pentru proiectul dvs. (pe care l-am numit? Contactați?). Introduceți identificatorul firmei dvs. și asigurați-vă că selectați iPhone pentru familia de dispozitive, deoarece vom face o aplicație pentru iPhone. Dacă ați terminat, faceți clic pe Următorul. Alegeți un loc pentru salvarea proiectului și apoi faceți clic pe creați.

Pasul 2: Proiectarea interfeței

În "Contact"? folder în "Project Navigator"? faceți clic pe ContactViewController.xib.

Trageți trei UITextFields din bibliotecă spre vedere și aranjați-le ca mai jos. Faceți același lucru cu un buton UIImageView și două Butoane rotunde.

Faceți clic pe Primul TextField și tastați? Prenume? în câmpul textului Placeholder. Faceți clic pe cel de-al doilea TextField și tastați? Nume de familie? în câmpul textului Placeholder. În cele din urmă, faceți clic pe a treia și ultima TextField și tastați? Vârstă? în câmpul textului Placeholder. Pentru tipul de tastatură, selectați Număr de caractere, deoarece veți avea nevoie doar de numere pentru a vă introduce vârsta.

Schimbați textul primului buton la "Salvare"? și textul celui de-al doilea buton pentru a alege Imagine?.

Acum mergem să facem conexiunile. Xcode 4 are un nou mod ușor și rapid de a face acest lucru. Selectați butonul din mijloc al editorului pentru a afișa editorul "Asistent"?.

Faceți clic pe primul nume TextField și CTRL-drag la interfață. Va apărea un pop-up, introduceți? FirstNameTextField? pentru nume și faceți clic pe "conectați".

Faceți același lucru cu câmpul Text Nume și vârstă și cu UIImageView, dar numiți-le ultimNameTextField, ageTextField și contactImageView. Pentru butoanele trebuie să schimbăm conexiunea la acțiune în loc de Outlet. Deci, CTRL trageți de la butonul de salvare la interfață, dar de data aceasta sub acolade curls. Modificați conexiunea la acțiune și introduceți "salvați"? pentru nume. Faceți același lucru cu butonul Alegeți imaginea, dar de data aceasta introduceți? ChooseImage? pentru nume. Acum, codul ContactViewController.h ar trebui să citească după cum urmează:

#import  @ interfață ContactViewController: UIViewController IBOutlet UIImageView * contactImageView; IBOutlet UITextField * firstNameTextField; IBOutlet UITextField * lastNameTextField; IBOutlet UITextField * ageTextField;  - (IBAction) salvați: (id) expeditor; - (IBAction) chooseImage: (id) expeditor; @Sfârșit

Acum am terminat cu interfața. Faceți clic pe Construiți și executați pentru a vedea dacă rulează bine. Introduceți un text și închideți aplicația. Dacă deschideți aplicația din nou, veți vedea probabil că textul pe care l-ați introdus este încă acolo. Dacă da, acest lucru este cauzat de capacitatea multitasking încorporată a iOS. Dacă ștergeți aplicația din bara de multitasking și deschideți din nou aplicația, veți vedea că textul pe care l-ați introdus a dispărut. În acest tutorial vom folosi NSUserDefaults pentru a salva informațiile introduse chiar dacă într-adevăr? închideți aplicația. Acest lucru va permite ca datele să persiste prin mai multe sesiuni.

Pasul 3: Alegerea unei imagini

Reveniți la modul Editor standard, astfel încât să aveți mai mult spațiu în care să lucrați. Deschideți ContactViewController.h și adăugați UIImagePickerControllerDelegate și UINavigationControllerDelegate.

Dacă ați terminat cu acest lucru, deschideți ContactViewController.m și defilați în jos la acțiunea ChooseImage și modificați codul pentru a citi după cum urmează:

- (IBAction) alegeImage: (id) expeditor UIImagePickerController * picker = [[[UIImagePickerController alocare] init] autorelease]; picker.delegate = auto; picker.allowsEditing = YES; picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; [auto prezentModalViewController: selector animat: YES]; 

Mai întâi, vom crea un UIImagePickerController, apoi am setat delegatul la sine. Apoi, permitem editarea utilizatorilor, apoi setăm tipul de sursă în biblioteca de fotografii și, în final, le afișăm cu o animație pentru utilizator.

În cazul acțiunii de selectare imagine, anunțați următoarele metode de delegare a selectorului de imagini:

#pragma marcă - Image Picker Delegat - (void) imagePickerController: (UIImagePickerController *) selector didFinishPickingImage: (UIImage *) editarea imaginii: (NSDictionary *) editingInfo contactImageView.image = imagine; [selector dismissModalViewControllerAnimated: YES];  - (void) imagePickerControllerDidCancel: (UIImagePickerController *) selector [selector dismissModalViewControllerAnimated: YES]; 

În prima metodă, am setat imaginea contactImageView la imaginea selectată și apoi am renunțat la UIImagePickerController. În a doua metodă, vom renunța doar la UIImagePickerController.

Pasul 4: Salvarea datelor

Puteți salva textul cu funcția: setObject: (id) pentruKey: (NSString *). Cheia trebuie să fie o cheie specifică pentru obiectul pe care îl salvați deoarece aveți nevoie de acea cheie pentru a obține datele salvate. Puteți salva întregi cu funcția: setInteger: (NSInteger) pentruKey: (NSString *). Pentru a salva imaginea trebuie mai întâi să creați o instanță de NSData din ea.
Mergeți la acțiunea de salvare și modificați codul după cum urmează:

- (IBAction) salvați: (id) expeditor // Ascunde tastatura [firstNameTextField resignFirstResponder]; [lastNameTextField resignFirstResponder]; [ageTextField resignFirstResponder]; // Creați șiruri și numere întregi pentru a stoca informația de text NSString * firstName = [textul firstNameTextField]; NSString * lastName = [textul lastNameTextField]; int age = [[vârstăTextField text] integerValue]; // Creați instanțe ale NSData UIImage * contactImage = contactImageView.image; NSData * imageData = UIImageJPEGRpresentație (contactImage, 100); // Stocați datele NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; [implicit setObject: firstName forKey: @ "firstName"]; [implicit setObject: lastName forKey: @ "lastname"]; [setInteger implicit: vârstă pentruKey: @ "vârstă"]; [implicit setObject: imageData pentruKey: @ "imagine"]; [implicit sincronizați]; NSLog (@ "date salvate"); 

Mai întâi ascundem tastatura. Apoi vom crea șiruri de text introduse în câmpul de text pentru primul și ultimul nume. De asemenea, creăm un număr întreg al vârstei pe care ați introdus-o. Apoi, stocăm imaginea din contactImageView ca obiect NSData, deoarece nu putem salva un UIImage direct cu NSUserDefaults. Apoi stocăm datele, noi numim funcția standardUserDefaults pentru a salva datele în ea. În cele din urmă, sincronizăm baza de date standardUserDefaults.

Pasul 5: Obțineți datele salvate

În cele din urmă vrem să obținem datele salvate. Facem acest lucru în metoda viewDidLoad, deoarece metoda se numește când se deschide aplicația. Derulați în jos la "viewDidLoad"? metoda, dezactivați-o și modificați codul după cum urmează:

- (void) viewDidLoad // Obțineți datele stocate înainte ca vizualizarea să încarce NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; NSString * firstName = [defaults objectForKey: @ "firstName"]; NSString * lastName = [defaults objectForKey: @ "nume de familie"]; int age = [implicit integerForKey: @ "vârstă"]; NSString * ageString = [NSString șirWithFormat: @ "% i", vârstă]; NSData * imageData = [implicit dateForKey: @ "imagine"]; UIImage * contactImage = [UIImage imageWithData: imageData]; // Actualizați elementele UI cu datele salvate firstNameTextField.text = FirstName; lastNameTextField.text = ultimName; ageTextField.text = ageString; contactImageView.image = contactImage; [super viewDidLoad]; 

Mai întâi apelăm din nou funcția standardUserDefaults, astfel încât să putem obține datele salvate. Am pus primul și ultimul nume într-un NSString. Deși vârsta este un număr întreg, vom crea un șir pentru a-l stoca, deoarece nu putem seta direct textul unui TextField la un număr întreg. Am pus imaginea într-un obiect NSData și apoi am creat un UIImage de la obiectul NSData. În final, actualizăm elementul UI cu datele salvate.

Acum, când aplicația este finalizată, construiți și rulați-o din nou. Introduceți datele și selectați o imagine. Închideți aplicația din bara de multitasking și deschideți din nou aplicația. Datele ar trebui să fie acolo de data aceasta și, dacă da, funcționează demo-ul nostru!

Vă mulțumim că ați citit acest tutorial despre NSUserDefaults! Dacă aveți întrebări sau comentarii cu privire la acest tutorial, lăsați-le în secțiunea de comentarii de mai jos!

Și dacă doriți să vă îmbunătățiți ca dezvoltator de iOS, de ce nu verificați gama uriașă de șabloane de aplicații iOS de pe Envato Market? Puteți să le utilizați ca bază pentru dezvoltarea propriilor aplicații, precum și pentru inspectarea codului verificat de calitate și învățarea de la acesta.

Sau răsfoiți serviciile de dezvoltare a aplicațiilor de la Envato Studio pentru a avea o aplicație creată pentru dvs. de la început până la sfârșit!

Servicii de dezvoltare de aplicații pe Envato Studio
Cod