iOS數據持久化之使用NSUserDefaults存儲數據

iOS數據持久化之使用NSUserDefaults存儲數據

做者:  發佈日期:2014-09-26 21:04:37sql


Tag標籤:數據  緩存

  • 1.用處:NSUserDefaults用來存儲相似用戶的配置、程序設置信息等這些的數據spa

    iOS下能夠使用NSUserDefault、NSKeyedArchiver、sqlite、CoreData幾種經常使用的方式來存儲數據,其中NSUserDefaults用來存儲相似用戶的配置等這些的數據,後二者用戶存儲大批量和比較複雜的數據。.net

    NSUserDefault 基本上支持全部的原生數據類型NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等等。若是要存放自定義的對象(如自定義的類對象),則必須將其轉換成NSData存儲。code

    2.用法:sqlite

    NSUserDefault的使用比較簡單:對象

    A類頁面:rem

    NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];get

    [userDefault setObject:@「北京」 forKey:LASTCITY];it

    [userDefault synchronize];

    B類頁面:

     

    NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];

    NSString *lastCity = [userDefault objectForKey:LASTCITY];

    3.細節用法:

     

    若是要存放自定義的對象(如自定義的類對象),則必須將其轉換成NSData存儲:

     

    1. NSUserDefaults *mySettingDataR = [NSUserDefaults standardUserDefaults];

    2. NSLog(@"arrItem=%@", [mySettingDataR objectForKey:@"arrItem"]);

    3. NSLog(@"user_name=%@", [mySettingDataR objectForKey:@"user_name"]);

    4. NSLog(@"count=%d", [mySettingDataR integerForKey:@"count"]);

      若是想刪除某個數據項,能夠使用removeObjectForKey刪除數據:

       

    1. [mySettingData synchronize]; 運行上面的語句後,NSUserDefaults中的數據即被寫入到.plist文件中,若是是在模擬器上運行程序,能夠在Mac的/Users/YOUR-USERNAME/Library/Application Support/iPhone Simulator/4.1/Applications/YOUR-APP-DIR/Library/Prefereces目錄下面找到一個文件名爲YOUR-Bundle_Identifier.plist的plist文件,用Xcode打開該文件,能夠看到剛纔寫入的數據。

      四、針對同一個關鍵字對應的對象或者數據,能夠對它進行重寫,重寫以後關鍵字就對應新的對象或者數據,舊的對象或者數據會被自動清理。

    1. [mySettingData removeObjectForKey:@"arrItem"];

       

      須要注意的是,NSUserDefaults是定時把緩存中的數據寫入磁盤的,而不是即時寫入,爲了防止在寫完NSUserDefaults後程序退出致使的數據丟失,能夠在寫入數據後使用synchronize強制當即將數據寫入磁盤:

       

    1. NSArray *arr = [[NSArray alloc] initWithObjects:@"arr1", @"arr2", nil]

    2. [mySettingData setObject:arr forKey:@"arrItem"];

    3. [mySettingData setObject:@"admin" forKey:@"user_name"];

    4. [mySettingData setBOOL:@YES forKey:@"auto_login"];

    5. [mySettingData setInteger:1 forKey:@"count"];往NSUserDefaults添加數據後,它們就變成了全局的變量,App中便可讀寫NSUserDefault中的數據:

相關文章
相關標籤/搜索