13 Şubat 2012 Pazartesi

UserDefaults kullanarak değer saklamak












iPhone'da veri saklama yollarından biri de UserDefaults kullanmaktır.


NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

[defaults setValue:value forKey:key];

[defaults synchronize];


Bu şekilde uygulamanıza özel bir depolama alanında istediğiniz verileri saklayabilirsiniz. Burada vereceğiniz anahtara göre istediğiniz veri tipini saklayabilirsiniz. synchronize metodu ise değer atamasından sonra değerleri diske yazacaktır. Burada dikkat etmeniz gereken eğer o anahtara önceden atanmış bir değer varsa bu dikkate alınmayacak, synchronize metodu sonrasında en güncel değer saklanacaktır. Bu yüzden veri kayıpları için kendiniz kontrol yapmalısınız.


Saklanan bir değer çağırmak içinse;


NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

return [defaults objectForKey:userKey];


metodu kullanılır. standardUserDefaults özel bir metoddur ve saklanan değerleri geri çağırmak için kullanılır. objectForKey metoduna değere karşılık gelen anahtarı girdiğinizde istediğiniz bilgiye kavuşmuş olursunuz.


Bazı değerler serializable özelliği taşımadığından NSUserDefaults ile kayıt edilemezler. Bu durumda sistem loglarında bu durum size belirtilecektir. Çözüm olarak NSKeyedArchiver kullanılabilir.


NSData *data = [NSKeyedArchiver archivedDataWithRootObject:userInfo];


Bu işlemden sonra NSData değeri yukarıdaki örnekteki gibi kayıt edilebilir. Bu şekilde kayıt edilmiş bir değeri çağırmak içinse 


NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

NSData *userData = [defaults objectForKey:userKey];

return [NSKeyedUnarchiver unarchiveObjectWithData:userData];


fonksiyonu kullanılır.


Hiç yorum yok:

Yorum Gönder