美文网首页
【ios】常用的数据存储方式和第一次App启动判断

【ios】常用的数据存储方式和第一次App启动判断

作者: LuckTime | 来源:发表于2016-06-20 16:15 被阅读188次

    判断是否是第一次启动,是否加载启动页

    在appdelegate.m中找到 “application:didFinishLaunchingWithOptions:”  
    通过NSUserDefaults 来进行判断 
     if (![[NSUserDefaultsstandardUserDefaults] boolForKey:@"everLaunched"])
     {         
         [[NSUserDefaultsstandardUserDefaults]setBool:YESforKey:@"everLaunched"];       
         [[NSUserDefaultsstandardUserDefaults]setBool:YESforKey:@"firstLaunch"];      
          NSLog(@"first launch");  
        }else {
              [[NSUserDefaultsstandardUserDefaults]setBool:NOforKey:@"firstLaunch"];          
           NSLog(@"second launch");
       }
    
      2、在RootViewController的  viewWillAppear:的方法里面进行添加 
     if ([[NSUserDefaultsstandardUserDefaults] boolForKey:@"firstLaunch"]) { 
             [[NSUserDefaultsstandardUserDefaults]setBool:NOforKey:@"firstLaunch"];  
             UserGuideController *userGuide = [[[UserGuideControlleralloc] init] autorelease];   
            [self present ModalViewController:userGuide animated:YES];   
       }
      3、在设置页面里面也可以添加同样的视图,让用户可以查看。  
      4,在沙盒地下设置一个文件,第一次运行的时候就创建这个文件,即运行这个新手指南类似的文件,以后判断是否
    存在这个文件,如果存在则不再创建(即不执行新手指南的展示方法)。
    或者在数据库里做一个标记,标记此文件是否被创建过。          
    自己实践:  
        if(![[NSUserDefaults standardUserDefaults] boolForKey:@"firstStart"]){ 
            [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"firstStart"];  
           NSLog(@"第一次启动");  
           self.window.rootViewController = [[WuNewFeature alloc]init]; 
        }else{
             NSLog(@"不是第一次启动"); 
            self.window.rootViewController = [[WuNewFeature alloc]init]; 
            MainVC *mainVC = [[MainVC alloc]init];   
            self.window.rootViewController = [[BaseNavigationController alloc]initWithRootViewController:mainVC];  
       }
    

    ios 常见的四种存储方式

    1.CoreData对象存储
    2.NSUserDefaults存储配置信息
    3.文件沙盒存储
    4.数据库存储

    1、归档和解档

    常用方法

    -(void)NSKeyedArchiver
    {
        NSString *str = @"abc";
        NSString *str1 = @"efg";
       
        NSArray *Array = [NSArray arrayWithObjects:str,str1, nil];
       
        //保存数据
        NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
        NSString *fileName = [path stringByAppendingPathComponent:@"text"];
        [NSKeyedArchiver archiveRootObject:Array toFile:fileName];
        NSLog(@"%@=======",path);
        NSLog(@"%@",fileName);
        //再次赋值,观察数据变化
        str = @"a";
        str1 = @"";
       
        //加载数据
        NSArray *arr = [NSKeyedUnarchiver unarchiveObjectWithFile:fileName];
        str = [arr objectAtIndex:0];
        str1 = [arr objectAtIndex:1];
       
        NSLog(@"%@",str);
        NSLog(@"%@",str1);
    
    }
    

    打印出来的数据应该是第一次输入的内容。因为在解档后,字符串是从文件中读出的

    属性解析:
    [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
    NSDocumentDirectory 打开的目录是文档目录
    NSDocumentationDirectory: 打开的是/Library/Documentation/的目录。
    NSDownloadsDirectory 打开的下载目录。
    因为应用是在沙箱(sandbox)中的,在文件读写权限上受到限制,只能在几个目录下读写文件:
    Documents:应用中用户数据可以放在这里,iTunes备份和恢复的时候会包括此目录
    tmp:存放临时文件,iTunes不会备份和恢复此目录,此目录下文件可能会在应用退出后删除
    Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除
    详细内容:
    http://blog.csdn.net/luohai859/article/details/42458307

    相关文章

      网友评论

          本文标题:【ios】常用的数据存储方式和第一次App启动判断

          本文链接:https://www.haomeiwen.com/subject/ovovdttx.html