iOS 資料持久化之使用NSUserDefaults儲存資料

來源:互聯網
上載者:User

iOS 資料持久化之使用NSUserDefaults儲存資料

1.用處:NSUserDefaults用來儲存類似使用者的配置、程式設定資訊等這些的資料

iOS下可以使用NSUserDefault、NSKeyedArchiver、sqlite、CoreData幾種常用的方式來儲存資料,其中NSUserDefaults用來儲存類似使用者的配置等這些的資料,後兩者使用者儲存大批量和比較複雜的資料。

NSUserDefault 基本上支援所有的原生資料類型NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等等。如果要存放自訂的對象(如自訂的類對象),則必須將其轉換成NSData儲存。

2.用法:

NSUserDefault的使用比較簡單:

A類頁面:

NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];

[userDefault setObject:@“北京” forKey:LASTCITY];

[userDefault synchronize];

B類頁面:

 

NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];

NSString *lastCity = [userDefault objectForKey:LASTCITY];

3.細節用法:

 

如果要存放自訂的對象(如自訂的類對象),則必須將其轉換成NSData儲存:

 

[cpp] 
  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中的資料:

     

     

    [cpp]
    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刪除資料:

       

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

         

        需要注意的是,NSUserDefaults是定時把緩衝中的資料寫入磁碟的,而不是即時寫入,為了防止在寫完NSUserDefaults後程式退出導致的資料丟失,可以在寫入資料後使用synchronize強制立即將資料寫入磁碟:

         

         

        [cpp]
        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開啟該檔案,可以看到剛才寫入的資料。

          4、針對同一個關鍵字對應的對象或者資料,可以對它進行重寫,重寫之後關鍵字就對應新的對象或者資料,舊的對象或者資料會被自動清理。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.