<强> IOS使用nsuserdefaults去实现界面传值和数据存储强>
系统单例nsuserdefaults的传值
<强>第一界面中强>
SecondViewController * secondvc=(SecondViewController新);//创建系统单例NSUserDefaults的实例对象 NSUserDefaults *缺省值=[NSUserDefaults standardUserDefaults];//存值 [违约setObject: _firsttextfield。文本forKey: @“firstTGP”); NSLog(@ % @,违约); (自我。导航控制器pushViewController: secondvc动画:是的); >之前<强>第二界面中强>
//创建对象来获取存好的数据 NSUserDefaults *缺省值=[NSUserDefaults standardUserDefaults];//接收数据 NSString * str=[违约objectForKey: @“firstTGP”);//赋值到控件 _secondlabel。文本=str; >之前说到单例,这里先说一下自己重写的单例传值的方法。自己重写单例类方法,实现两个页面传值,都是给定的死值。重写单例的原因,是希望在程序的运行期间,他在内存中一直存在,可以随时读取数据
首先创建单例类(DataHandle),两种方法
# pragma马克- - -第一种方法://创建单例方法使用加号的原因:在创建之前无法存在一个实例对象去调用 + (instancetype) sharedDatahandle {//为了线程安全(添加线程锁) @ synchronized(自我){ 如果(! dataHandle) { dataHandle=[[dataHandle alloc] init); } } 返回dataHandle; } >之前# pragma马克- - -第二种方法: + (instancetype) sharedDatahandle { 静态DataHandle * DataHandle=零; 静态dispatch_once_t> self.navigationItem。leftBarButtonItem=[[UIBarButtonItem alloc] initWithTitle: @“返回”风格:UIBarButtonItemStylePlain目标:自我行动:@ selector (backAC)]; DataHandle *处理=[DataHandle sharedDatahandle]; 句柄。标题=@“年薪”; - (void) backAC { (自我。实现通过调用popViewControllerAnimated导航控制器:是的); } >之前<强>第一页面强>
- (void)那些:(BOOL){//动画从后往前传时的取值操作//取值(同样不能写在ViewDidLoad中) DataHandle *处理=[DataHandle sharedDatahandle]; self.firstLabel。文本=handle.title; } >之前嘿嘿,有点跑题了,下边继续说nsuserdefaults,接着说nsuserdefaults的数据存储
在使用nsuserdefaults自定义对象的最初,必须知道可以存哪些类型的数据
1: NSNumber (NSInteger、浮点数、双)
2: NSString, NSArray NSDictionary, BOOL
//使用nsuserdefaults进行存储//1:创建要存储的数组 NSArray数组*=@ [@“11”@“22”@“33”);//创建nsuserdefaults对象 NSUserDefaults *用户=[NSUserDefaults standardUserDefaults]; [用户setObject:数组forKey: @“userArray”); NSLog(@ % @”、用户);//读取 NSArray * newarr=(用户objectForKey: @“userArray”); NSLog (@ % @”, newarr); >之前#警告注意:对相同的关键赋值约等于一次覆盖,要保证每一个关键的唯一性//NSUserDefaults存储的对象全是不可变的(这一点非常关键,弄错的话程序会出错误),例如,如果我想要存储一个NSMutableArray对象,我必须先创建一个不可变数组(NSArray)再将它存入NSUserDefaults中去 NSMutableArray *可变数组=[NSMutableArray arrayWithObjects: @“123”@“234”@“456”, nil); NSArray * array1=[NSArray arrayWithArray可变数组):; NSUserDefaults * user2=[NSUserDefaults standardUserDefaults]; [user2 setObject: array1 forKey: @”我们这里存放的一定是不可变的”);//取出数据是一样的,想要用NSUserDefaults中的数据给可变数组赋值/* - - - - - - - - - - - - - - - -错误方法- - - - - - - - - - - - - - - *///NSMutableArray *可变数组=[用户objectForKey: @“我们这里存放的一定是不可变的”);////这样写后,可变数组就变成了不可变数组了,如果你要在数组中添加或删除数据就会出现//NSLog(@ % @,可变数组);/* - - - - - -正确- - - - - - - - - - */NSMutableArray *可变数组=[NSMutableArray arrayWithArray:(user2 objectForKey: @“我们这里存放的一定是不可变的“]]; NSLog(@ % @,可变数组); >之前感谢阅读,希望能帮助到大家,谢谢大家对本站的支持。
IOS使用nsuserdefaults去实现界面传值和数据存储