html将数据永久保存起来,数据保存(永久保存)方式(示例代码)
一、数据保存(永久保存)方式有五种:
1.NSUserDefaults:保存设置数据,bool
2.归档:保存自定义数据
3.文件(plist,txt)
4.数据库和CoreData
5.KeyChain(钥匙串—系统中 钥匙串访问 这个程序)
只有数据库和CoreData才适合用于保存大量的数据(效率高,因为有数据库的算法),其它方式只用于保存少量数据(保存大量数据效率低)。
前四个在沙盒范围内的,第五个即使删除app也存在于手机中。
KeyChain钥匙串是单向加密的,最为安全。
二、.NSUserDefaults
(1)只能保存基本数据类型(int,float,double,BOOL,NSString,NSArray,NSDictionary,NSData,NSURL等),不能保存自定义的对象
(2)用于保存系统的设置型数据,如手机操作系统里面的`通用`设置数据
(3)NSUserDefaults 采取定期保存的机制,具体多久保存一次未知,也可手动采取立即保存(需要调用synchronize)
(4)只用于保存少量数据
(5)以键值对的形式保存
基本操作:
//set方法保存(定期保存,如果立即保存,需要调用synchronize)
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@”key1”];
[[NSUserDefaults standardUserDefaults] setObject:@[] forKey:@”key2”];//数组//强制保存
[[NSUserDefaults standardUserDefaults] synchronize];//取值
[[NSUserDefaults standardUserDefaults] boolForKey:@”key”];//删除
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@”key”];
应用例子:自动登录
#import “ViewController.h”
//自动登录//#define kAutoLoginKey @”kAutoLoginKey”
@interfaceViewController ()
@property (weak, nonatomic) IBOutlet UITextField*username;
@property (weak, nonatomic) IBOutlet UITextField*password;- (IBAction)login:(id)sender;- (IBAction)autoLoginBtnClick:(UIButton *)sender;@end
@implementationViewController- (void)viewDidLoad {
[super viewDidLoad];//自动登录
if ([[NSUserDefaults standardUserDefaults] boolForKey:@”kAutoLoginKey”])
{//发送登录请求,然后请求主页界面的数据
NSLog(@”发送登录请求”);
}else{//弹出登录界面,登录成功后dismiss掉登录界面
NSLog(@”弹出登录”);
}
}- (IBAction)login:(id)sender {//若勾选了自动登录按钮,保存用户信息到 NSUserDefaults
}//自动登录按钮
- (IBAction)autoLoginBtnClick:(UIButton *)sender
{//修改按钮状态
sender.selected = !sender.selected;//保存当前状态
[[NSUserDefaults standardUserDefaults] setBool:sender.selected forKey:@”kAutoLoginKey”];
[[NSUserDefaults standardUserDefaults] synchronize];
}@end
三、归档
(1)能保存自定义的对象,解决NSUserDefaults不能解决的问题
(2)以类的形式保存
六、KeyChain
()以键值对的形式保存数据
还没有评论,来说两句吧...