iPhone開發之使用NSUserDefaults存儲數據


NSUserDefaults用於存儲數據量小的數據,例如用戶配置。並不是所有的東西都能往里放的,
只支持:NSString, NSNumber, NSDate, NSArray, NSDictionary
存放於一個plist文件中。這個文件位於在 app同級目錄的/Library/Preferences目錄下

其實 NSUserDefaults主要就是setObject和objectForKey差不多就夠了,要有多復雜的數據需要存儲就直接用其他的方法好了;
此外,還有個什么registerDefaults方法,也不是很需要的樣子

注意點UserDefaults不是立即寫入,而是根據時間戳定時的把緩存中的數據寫入本地磁盤。所以調用了set方法之后數據有可能還沒有寫入磁盤應用程序就終止了。出現以上問題。可以通過調用synchornize方法強制寫入。

 代碼如下:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"111" forKey:@"myTest"];
[defaults synchronize];
NSString *testStr = [defaults objectForKey:@"myTest"];
NSLog(@"testStr is: %@",testStr);

  

 

 

=================分隔線,上面這些差不多夠了,下面的只是個例子===========================

//方法1:在需要使用到的地方寫入下列代碼即可,無需導入任何文件

//存數據
NSUserDefaults *appDefault =[NSUserDefaultsstandardUserDefaults];
[appDefault setObject:@"123" forKey:@"one"]; 

// saving an NSInteger
[
appDefault setInteger:42 forKey:@"integerKey"];

// saving a Double
[
appDefault setDouble:3.1415 forKey:@"doubleKey"];

// saving a Float
[
appDefault setFloat:1.2345678 forKey:@"floatKey"];


//讀數據
NSUserDefaults *appDefault =[NSUserDefaultsstandardUserDefaults];
NSLog(
@"qq%@",[appDefault objectForKey:@"one"]);

// getting an NSString
NSString *myString = [
appDefault stringForKey:@"keyToLookupString"];

// getting an NSInteger
NSInteger myInt = [
appDefault integerForKey:@"integerKey"];

// getting an Float
float myFloat = [
appDefault floatForKey:@"floatKey"];

 

//方法2:全局定義,即不用每個使用到的地方都寫 NSUserDefaults *appDefault =[NSUserDefaultsstandardUserDefaults]; 語句

//AppDelegate.h文件中添加
#define appDelegate ((AppDelegate *)[[UIApplication sharedApplication] delegate])
@property (assign, nonatomic)NSUserDefaults *appDefault;

//AppDelegate.m文件中添加 @synthesize appDefault; appDelegate.appDefault = [NSUserDefaults standardUserDefaults];

//順帶初始化下
[appDelegate.appDefault setObject:NULL forKey:@"one"];

然后在任意使用的地方添加:

//存數據
  [appDelegate.appDefault setObject:@"122333" forKey:@"one"];
//讀數據
[appDelegate.appDefault objectForKey:@"one"]

  

還有一個好的方法來存儲你的當前實例的全局變量

再建立一個類,專用來存放你的全局的變量,這樣可以分得更清楚

特別是數據相對較多,較復雜的情況

用專用的類來存儲你的全局數據,是更好的辦法

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM