http://www.zaachi.com/cs/items/iphone-developer-nsuserdefaults-uzivatelske-promenne.html

iPhone - NSUserDefaults - uživatelské proměnné

Publikováno: 17.08.2011 22:14:13

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];

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:

//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:

iphone

Načtení 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]);

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:

//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");
}