iOS应用支持偏好设置,要来保存数据,比如保存用户名、密码、字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置。
每个应用都有一个NSUserDefaults实例,通过它来存取偏好设置。
+ (NSUserDefaults *)standardUserDefaults //单例对象
存储偏好设置使用set开头的方法,如:
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject:@"aaa" forKey:@"account"]; [defaults setObject:@"123" forKey:@"password"]; [defaults setInteger:10 forKey:@"age"]; [defaults setBool:YES forKey:@"autoLogin"]; //存储后立刻同步 [defaults synchronize];
读取偏好设置也有对应的方法,如:
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; NSString * account = [defaults objectForKey:@"account"]; BOOL autoLogin = [defaults boolForKey:@"autoLogin"];
应用案例:新特性页面的显示
很多App下载或更新后第一次打开会显示一个新特性页面(往往是多张图片展示新特性),再次打开不会再显示。
实现方式:
将每一次App运行时的版本号存储在偏好设置中
App启动时,检测存储在偏好设置中的版本号与当前的版本号是否一致
如:
//AppDelegate的didFinishLaunching...方法中 //通过UserDefault获得上一次app运行时的版本 NSString * lastVersion = [[NSUserDefaults standardUserDefaults] objectForKey:UserDefaultBundleVerson]; //获取当前Bundle Version NSURL * infoPlistURL = [[NSBundle mainBundle] URLForResource:@"Info.plist" withExtension:nil]; NSDictionary * dict = [NSDictionary dictionaryWithContentsOfURL:infoPlistURL]; NSString * currentVersion = dict[(NSString*)kCFBundleVersionKey]; //如果这个版本时第一次进入,则显示新特性页面 if ( ![currentVersion isEqualToString:lastVersion] ) { UIViewController * vc = [[UIStoryboard storyboardWithName:@"MainPage" bundle:nil] instantiateViewControllerWithIdentifier:@"newFeature"]; self.window.rootViewController = vc; } else { UIViewController * vc = [[UIStoryboard storyboardWithName:@"MainPage" bundle:nil] instantiateViewControllerWithIdentifier:@"mainPage"]; self.window.rootViewController = vc; }
//新特性跳转到App主页时 //获取当前Bundle Version NSURL * infoPlistURL = [[NSBundle mainBundle] URLForResource:@"Info.plist" withExtension:nil]; NSDictionary * dict = [NSDictionary dictionaryWithContentsOfURL:infoPlistURL]; NSString * currentVersion = dict[(NSString*)kCFBundleVersionKey]; //将当前版本保存到UserDefault中 [[NSUserDefaults standardUserDefaults] setObject:currentVersion forKey:UserDefaultBundleVerson];
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。