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:
//nova instance NSUserDefaults NSUserDefaults *data = [NSUserDefaults standardUserDefaults];
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:
//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:
Obdobně jako ukládání dat, můžeme data načítat:
//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:
//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]);
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:
//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");
}