日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IOS中NSUserDefaults的用法

發布時間:2023/12/10 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IOS中NSUserDefaults的用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

?

IOS中NSUserDefaults的用法(輕量級本地數據存儲)

分類:?IOS開發?Object-C編程語言2012-09-09 10:58?65223人閱讀?評論(13)?收藏?舉報

存儲iosfloatinterfaceintegerdate

NSUserDefaults適合存儲輕量級的本地數據,比如要保存一個登陸界面的數據,用戶名、密碼之類的,個人覺得使用NSUserDefaults是首選。下次再登陸的時候就可以直接從NSUserDefaults里面讀取上次登陸的信息咯。

因為如果使用自己建立的plist文件什么的,還得自己顯示創建文件,讀取文件,很麻煩,而是用NSUserDefaults則不用管這些東西,就像讀字符串一樣,直接讀取就可以了。

NSUserDefaults支持的數據格式有:NSNumber(Integer、Float、Double),NSString,NSDate,NSArray,NSDictionary,BOOL類型。很實用吧

NSUserDefaults很方便,讀取也很容易。下面給出一個示例看看如何使用:(PS:更詳細的也可以參考官方文檔哈)

ViewController.h文件中主要是放幾個控件,用于顯示存儲的數據:

[cpp]?view plaincopy

  • #import?<UIKit/UIKit.h>??

  • ??

  • @interface?ViewController?:?UIViewController??

  • {??

  • ??????

  • ????IBOutlet?UILabel?*txtInteger;??

  • ????IBOutlet?UILabel?*txtFloat;??

  • ????IBOutlet?UILabel?*txtDouble;??

  • ????IBOutlet?UILabel?*txtNSString;??

  • ????IBOutlet?UILabel?*txtNSDate;??

  • ????IBOutlet?UILabel?*txtNSArray;??

  • ????IBOutlet?UILabel?*txtNSDictionary;??

  • }??

  • ??

  • @end??

  • ViewController.m文件中最重要的是兩個方法:

    saveNSUserDefaults:用于將各種類型數據保存到NSUserDefaults中

    readNSUserDefautls:用于從NSUserDefaults中讀取各種類型的數據。在viewDidLoad中調用這兩個方法就可以看出結果咯

    [cpp]?view plaincopy

  • #import?"ViewController.h"??

  • ??

  • @interface?ViewController?()??

  • ??

  • @end??

  • ??

  • @implementation?ViewController??

  • ??

  • -?(void)viewDidLoad??

  • {??

  • ????[super?viewDidLoad];??

  • ??

  • ????[self?saveNSUserDefaults];??//調用此方法將各種數據存儲到NSUserDefautls中,在下面定義??

  • ????[self?readNSUserDefaults];??//調用此方法從NSUserDefautls中讀取各種數據,在下面定義??

  • }??

  • ??

  • -?(void)viewDidUnload??

  • {??

  • ????[txtNSString?release];??

  • ????txtNSString?=?nil;??

  • ????[txtNSDate?release];??

  • ????txtNSDate?=?nil;??

  • ????[txtNSArray?release];??

  • ????txtNSArray?=?nil;??

  • ????[txtNSDictionary?release];??

  • ????txtNSDictionary?=?nil;??

  • ????[txtInteger?release];??

  • ????txtInteger?=?nil;??

  • ????[txtFloat?release];??

  • ????txtFloat?=?nil;??

  • ????[txtDouble?release];??

  • ????txtDouble?=?nil;??

  • ????[super?viewDidUnload];??

  • ????//?Release?any?retained?subviews?of?the?main?view.??

  • }??

  • ??

  • -?(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation??

  • {??

  • ????return?(interfaceOrientation?!=?UIInterfaceOrientationPortraitUpsideDown);??

  • }??

  • ??

  • -?(void)dealloc?{??

  • ????[txtNSString?release];??

  • ????[txtNSDate?release];??

  • ????[txtNSArray?release];??

  • ????[txtNSDictionary?release];??

  • ????[txtInteger?release];??

  • ????[txtFloat?release];??

  • ????[txtDouble?release];??

  • ????[super?dealloc];??

  • }??

  • ??

  • //保存數據到NSUserDefaults??

  • -(void)saveNSUserDefaults??

  • {??

  • ????NSString?*myString?=?@"enuola";??

  • ????int?myInteger?=?100;??

  • ????float?myFloat?=?50.0f;??

  • ????double?myDouble?=?20.0;??

  • ????NSDate?*myDate?=?[NSDate?date];??

  • ????NSArray?*myArray?=?[NSArray?arrayWithObjects:@"hello",?@"world",?nil];??

  • ????NSDictionary?*myDictionary?=?[NSDictionary?dictionaryWithObjects:[NSArray?arrayWithObjects:@"enuo",?@"20",?nil]?forKeys:[NSArray?arrayWithObjects:@"name",?@"age",?nil]];??

  • ??????

  • ????//將上述數據全部存儲到NSUserDefaults中??

  • ????NSUserDefaults?*userDefaults?=?[NSUserDefaults?standardUserDefaults];??

  • ????//存儲時,除NSNumber類型使用對應的類型意外,其他的都是使用setObject:forKey:??

  • ????[userDefaults?setInteger:myInteger?forKey:@"myInteger"];??

  • ????[userDefaults?setFloat:myFloat?forKey:@"myFloat"];??

  • ????[userDefaults?setDouble:myDouble?forKey:@"myDouble"];??

  • ??????

  • ????[userDefaults?setObject:myString?forKey:@"myString"];??

  • ????[userDefaults?setObject:myDate?forKey:@"myDate"];??

  • ????[userDefaults?setObject:myArray?forKey:@"myArray"];??

  • ????[userDefaults?setObject:myDictionary?forKey:@"myDictionary"];??

  • ??????

  • ????//這里建議同步存儲到磁盤中,但是不是必須的??

  • ????[userDefaults?synchronize];??

  • ??????

  • }??

  • ??

  • //從NSUserDefaults中讀取數據??

  • -(void)readNSUserDefaults??

  • {??

  • ????NSUserDefaults?*userDefaultes?=?[NSUserDefaults?standardUserDefaults];??

  • ??????

  • ????//讀取數據到各個label中??

  • ????//讀取整型int類型的數據??

  • ????NSInteger?myInteger?=?[userDefaultes?integerForKey:@"myInteger"];??

  • ????txtInteger.text?=?[NSString?stringWithFormat:@"%d",myInteger];??

  • ??????

  • ????//讀取浮點型float類型的數據??

  • ????float?myFloat?=?[userDefaultes?floatForKey:@"myFloat"];??

  • ????txtFloat.text?=?[NSString?stringWithFormat:@"%f",myFloat];??

  • ??????

  • ????//讀取double類型的數據??

  • ????double?myDouble?=?[userDefaultes?doubleForKey:@"myDouble"];??

  • ????txtDouble.text?=?[NSString?stringWithFormat:@"%f",myDouble];??

  • ??????

  • ????//讀取NSString類型的數據??

  • ????NSString?*myString?=?[userDefaultes?stringForKey:@"myString"];??

  • ????txtNSString.text?=?myString;??

  • ??????

  • ????//讀取NSDate日期類型的數據??

  • ????NSDate?*myDate?=?[userDefaultes?valueForKey:@"myDate"];??

  • ????NSDateFormatter?*df?=?[[NSDateFormatter?alloc]?init];??

  • ????[df?setDateFormat:@"yyyy-MM-dd?HH:mm:ss"];??

  • ????txtNSDate.text?=?[NSString?stringWithFormat:@"%@",[df?stringFromDate:myDate]];??

  • ??????

  • ????//讀取數組NSArray類型的數據??

  • ????NSArray?*myArray?=?[userDefaultes?arrayForKey:@"myArray"];??

  • ????NSString?*myArrayString?=?[[NSString?alloc]?init];??

  • ????for(NSString?*str?in?myArray)??

  • ????{??

  • ????????NSLog(@"str=?%@",str);??

  • ????????myArrayString?=?[NSString?stringWithFormat:@"%@??%@",?myArrayString,?str];??

  • ????????[myArrayString?stringByAppendingString:str];??

  • //????????[myArrayString?stringByAppendingFormat:@"%@",str];??

  • ????????NSLog(@"myArrayString=%@",myArrayString);??

  • ????}??

  • ????txtNSArray.text?=?myArrayString;??

  • ??????

  • ????//讀取字典類型NSDictionary類型的數據??

  • ????NSDictionary?*myDictionary?=?[userDefaultes?dictionaryForKey:@"myDictionary"];??

  • ????NSString?*myDicString?=?[NSString?stringWithFormat:@"name:%@,?age:%d",[myDictionary?valueForKey:@"name"],?[[myDictionary?valueForKey:@"age"]?integerValue]];??

  • ????txtNSDictionary.text?=?myDicString;??

  • }??

  • ??

  • @end??



  • 好了,運行一下,可以看到xib文件中的各種數據已經綁定上了吧?


    再次運行的時候,可以把viewDidLoad中的 ?[self ?saveNSUserDefaults]; ?這一行注釋掉,讓程序直接讀取而不存儲數據,發現以前保存的數據仍然可以讀取到界面上

    嘻嘻,很簡單吧,就這樣就可以是實現數據的存儲了。

    下面講一下原理:

    你可能會問一個問題:NSUserDefautls將數據存儲在什么地方了???我都沒有顯示的指定路徑???很疑惑吧。。。。

    用NSUserDefaults存儲的數據下次程序運行的時候依然存在,它把數據存儲在什么地方了?如何能夠清除?

    其實它存儲在應用程序內置的一個plist文件里,這個可以根據路徑看到。

    比如說這個是你的程序沙盒位置
    /UsersLibrary/Application Support/iPhoneSimulator/4.1/Applicati*****/29788E40-AF47-45A0-8E92-3AC0F501B7F4/,(這個是應用程序對應在mac上的位置)
    這個下面有/Library/Prefereces,里面有個plist文件,存儲的就是你的userDefaults
    想要刪掉的話,用removeObjectForKey或者刪掉沙盒,也就是你的應用程序然后重新安裝。



    轉載于:https://my.oschina.net/gongxiao/blog/509115

    總結

    以上是生活随笔為你收集整理的IOS中NSUserDefaults的用法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。