你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS 數據持久化之使用NSUserDefaults存儲數據

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

編輯:IOS開發綜合

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、針對同一個關鍵字對應的對象或者數據,可以對它進行重寫,重寫之後關鍵字就對應新的對象或者數據,舊的對象或者數據會被自動清理。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved