判断是否是第一次启动,是否加载启动页
在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