您好,登錄后才能下訂單哦!
偏好設置
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];
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。