2011-10-15 49 views
0

我是iphone编程新手。请解释我这个代码。那就是使用standardUserDefaults?这个代码如何工作?standardUserDefaults有什么用?

-(void)load 
    { 
DLog("Load Configuration"); 

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

bool savedDefaults = [defaults boolForKey:kKeySavedDefaults]; 
if (savedDefaults) 
{ 
    columns = [defaults integerForKey:kKeyColumns]; 
    if (columns == 0) columns = kColumnsDefault; 

    rows = [defaults integerForKey:kKeyRows]; 
    if (rows == 0) rows = kRowsDefault; 

    photoType = [defaults integerForKey:kKeylastPhotoType]; 
    photoEnabled = [defaults boolForKey:kKeyPhotoEnabled]; 
    numbersEnabled = [defaults boolForKey:kKeyNumbersEnabled]; 
    soundEnabled = [defaults boolForKey:kKeySoundEnabled]; 
} 
else 
{ 
    columns = kColumnsDefault; 
    rows = kRowsDefault; 
    photoType = klastPhotoTypeDefault; 
    photoEnabled = kPhotoEnabledDefault; 
    numbersEnabled = kNumbersEnabledDefault; 
    soundEnabled = kSoundEnabledDefault; 
} 
} 
-(void)save 
    { 
    DLog("Save Configuration"); 
    BOOL restart = NO; 

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

    if ([defaults integerForKey:kKeyColumns] != columns) { restart = YES; } 
    if ([defaults integerForKey:kKeyRows] != rows) { restart = YES; } 

    [defaults setBool:YES forKey:kKeySavedDefaults]; 
    [defaults setInteger:columns forKey:kKeyColumns]; 
    [defaults setInteger:rows forKey:kKeyRows]; 
    [defaults setInteger:photoType forKey:kKeylastPhotoType]; 
    [defaults setBool:photoEnabled forKey:kKeyPhotoEnabled]; 
    [defaults setBool:numbersEnabled forKey:kKeyNumbersEnabled]; 
    [defaults setBool:soundEnabled forKey:kKeySoundEnabled]; 
    [defaults synchronize]; 

    [board configChanged:restart]; 
} 

回答

3

用户默认值用于存储一些配置参数。

documentation

的NSUserDefaults的类提供 编程接口与所述默认的系统进行交互。默认系统允许 应用程序定制其行为以匹配用户的偏好。例如,您可以允许用户确定应用程序显示的测量单位为 ,或自动保存文档 的频率。应用程序通过将 值分配给用户默认数据库中的一组参数来记录此偏好。 参数被称为默认值,因为它们通常用于 确定应用程序在启动时的默认状态或默认情况下其作用 的方式。

0

如果你想利用这些概念,你可以在值

+0

我的密码存储在一个简单,坦率的plist存放一些少量的像用户名的数据,密码......?我只是希望我不使用你的一个应用程序oO – JustSid

+1

更好地使用密钥链来获取密码。 – jcm