iPhone – NSUserDefaults – uživatelské proměnné
Data, která chceme vrámci aplikace zachovat, si můžeme uložit do NSUserDefaults. Data tady zůstanou i po ukončeni aplikace a při jejím opětovném spuštění k nim můžeme kdykoli znova přistupovat.
Pro práci s NSUserDefaults si vytvoříme novou instanci:
1 2 |
//nova instance NSUserDefaults NSUserDefaults *data = [NSUserDefaults standardUserDefaults]; |
Uložení dat
S takto vytvořeným objektem můžeme pracovat. NSUserDefaults se obecně stará o data, takže začneme tím, že do objektu data uložíme:
1 2 3 4 5 6 |
//define user defaults key NSString *keyName = @"appKey"; //Ulozeni dat pod klicem [data setValue:@"string" forKey:keyName]; //synchronizace [data synchronize]; |
Data ukládáme pod námi zvoleným klíčem, který je k datům přiřazen a přes který k datům můžeme opět přistupovat.
Do NSUserDefaults můžeme uložit prakticky jakoukoli strukturu dat:
Načtení dat
Obdobně jako ukládání dat, můžeme data načítat:
1 2 3 4 5 6 7 8 |
//define user defaults key NSString *keyName = @"appKey"; //nova instance NSUserDefaults NSUserDefaults *data = [NSUserDefaults standardUserDefaults]; //nacteni dat podle klice NSString *appData = [data objectForKey:keyName]; //vypsani dat NSLog(@"%@", appData); |
Načtená data mají stejný datový typ jako uložená data, takže k nim můžeme přistupovat jako bychom pracovali s danou proměnnou.
Můžeme si ukázat ještě na jednom příkladu:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
//nova instance NSUserDefaults NSUserDefaults *data = [NSUserDefaults standardUserDefaults]; //vytvoreni NSMutableArray NSMutableArray *muarr = [[NSMutableArray alloc] init]; //naplneni zakladnimi hodnotami [muarr addObject:@"first"]; [muarr addObject:@"first"]; //ulozeni do user defaults [data setObject:muarr forKey:@"muarr"]; //synchronizace [data synchronize]; //nacteni dat z NSMutableArray NSMutableArray *arr2 = [data objectForKey:@"muarr"]; //vypsání velikosti pole NSLog(@"%d", [arr2 count]); |
Další operace nad NSUserDefaults
Samozřejmě krom ukládání a načítání nabízí NSUserDefaults další operace, jako je mazání atp. Pro základní práci vám bude stačit uvedený příklad:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
//define user defaults key NSString *keyName = @"appKey"; //nova instance NSUserDefaults NSUserDefaults *data = [NSUserDefaults standardUserDefaults]; if (saveData == TRUE ) { //Ulozeni dat pod klicem [data setValue:@"string" forKey:keyName]; //synchronizace [data synchronize]; } //kontrola jestli existuji data if ( [data objectForKey:keyName] ){ //vypsani dat NSLog(@"%@", [data objectForKey:keyName]); //odstraneni dat podle klice [data removeObjectForKey:keyName]; } else { NSLog(@"there are no data"); } |