2011-10-15 77 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

相關問題