NSUserDefaults 是iOS中用于保存数据的类之一;
它是一个单例,在整个程序中只有一个实例对象,他可以用于数据的永久保存,而且简单实用。
NSUserDefaults支持保存的数据类型有:NSNumber(NSInteger、float、double),NSString,NSDate,NSArray,NSDictionary,BOOL.
自定义的类如果想要用NSUserDefaults来保存,需要实现NSCoding协议!!!
使用过程
1.写入
//将NSString 对象存储到 NSUserDefaults 中 NSString *passWord = @"www.baidu.password.com"; NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; [userDefaults setObject:passWord forKey:@"userPassWord"];
2.读取
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; // 将数据取出来,只需要取出key 对应的值就好了,代码如下: NSString *readPassWord = [userDefaults objectForKey:@"userPassWord"]; NSLog(@"%@",readPassWord); //注意:对相同的Key赋值约等于一次覆盖,要保证每一个Key的唯一性
******* 重点注意的地方 *******
NSUserDefaults 存储的对象全是不可变的!!
例如将NSMutableString 、NSMutableArray、NSMutableDictionary 这样的数据保存在NSUserDefaults 在存储的过程中会自动的把它们的可变性去掉变成成NSString 、NSArray、NSDictionary 所以取出来后他们的数据类型也是转化后的类型!
NSMutableArray *mutableArray = [NSMutableArray arrayWithObjects:@"123",@"234", nil]; [userDefaults setObject:mutableArray forKey:@"arrKey"]; NSLog(@"%@",[userDefaults objectForKey:@"arrKey"]); NSMutableArray *mArr = [userDefaults objectForKey:@"arrKey"]; [mArr addObject:@"789"]; //程序运行到这的时候会崩溃 reason: ‘-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object‘ NSLog(@"%@",mArr);
开发者千万别在做项目的时候,写这样sb的代码!!!
原文:http://www.cnblogs.com/Mgs1991/p/5140564.html