建设银行网站-个人业务,建设网站过水,怎么做区块链媒体网站,黄页网页的推广网站2019独角兽企业重金招聘Python工程师标准 IOS中NSUserDefaults的用法#xff08;轻量级本地数据存储#xff09; 分类#xff1a; IOS开发 Object#xff0d;C编程语言2012-09-09 10:58 65223人阅读 评论(13) 收藏 举报 存储iosfloatinterfaceintegerdate NS… 2019独角兽企业重金招聘Python工程师标准 IOS中NSUserDefaults的用法轻量级本地数据存储 分类 IOS开发 ObjectC编程语言2012-09-09 10:58 65223人阅读 评论(13) 收藏 举报 存储iosfloatinterfaceintegerdate NSUserDefaults适合存储轻量级的本地数据比如要保存一个登陆界面的数据用户名、密码之类的个人觉得使用NSUserDefaults是首选。下次再登陆的时候就可以直接从NSUserDefaults里面读取上次登陆的信息咯。 因为如果使用自己建立的plist文件什么的还得自己显示创建文件读取文件很麻烦而是用NSUserDefaults则不用管这些东西就像读字符串一样直接读取就可以了。 NSUserDefaults支持的数据格式有NSNumberInteger、Float、DoubleNSStringNSDateNSArrayNSDictionaryBOOL类型。很实用吧 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