用NSUserDefaults存儲配置信息分兩種情況:
1.如果是密碼用戶名等敏感信息,一般不使用NSUserDefaults,而是用Keychain存儲用戶敏感信息。
2.如果是設置 第一次打開應用引導界面、記住密碼,那么,可使用NSUserDefaults。
項目dome已經上傳GitHub:***https://github.com/BigTortoise/LearnNSUserDefaults ***
首次登陸,APP引導介紹頁
先貼上引導頁的代碼
//配置scrollView
scrollView.frame = self.view.bounds
scrollView.contentSize = CGSizeMake(4*self.view.frame.width, 0)
scrollView.pagingEnabled = true
scrollView.showsHorizontalScrollIndicator = false
scrollView.delegate = self
self.view.addSubview(scrollView)
for var i=0;i<4;i++ {
let image = UIImage(named: "\(i+1)")
let imageView = UIImageView(frame: CGRectMake(0, 0, self.view.frame.width, self.view.frame.height))
imageView.image = image
var frame = imageView.frame
frame.origin.x = CGFloat(i)*frame.size.width
imageView.frame = frame
scrollView.addSubview(imageView)
self.view.addSubview(pageControl)
}
func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
let index = Int(scrollView.contentOffset.x / self.view.frame.size.width) //獲取當前頁數
pageControl.currentPage = index
//在這里添加按鈕的漸入效果,當頁面滑到第4頁時出現
if(index == 3)
{
self.btn.frame = CGRectMake(3*self.view.frame.width, self.view.frame.height, self.view.frame.width, 50)
self.btn.setTitle("開啟Swift之旅", forState: UIControlState.Normal)
self.btn.titleLabel?.font = UIFont.systemFontOfSize(20)
self.btn.setTitleColor(UIColor.grayColor(), forState: UIControlState.Highlighted)
self.btn.backgroundColor = UIColor.orangeColor()
self.btn.alpha = 0
self.btn.addTarget(self, action: "buttonClick:", forControlEvents: UIControlEvents.TouchUpInside)
UIView.animateWithDuration(1.5, delay: 0.5, options: UIViewAnimationOptions.CurveEaseInOut, animations: { () -> Void in
self.btn.frame = CGRectMake(3*self.view.frame.width, self.view.frame.height-100, self.view.frame.width, 50)
self.btn.alpha = 1
//注意把按鈕添加到scrollView上,不要添加到imageView上,會無法點擊
self.scrollView.addSubview(self.btn)
}, completion: nil)
}
}
//配置pageControl
pageControl.center = CGPointMake(self.view.frame.width/2, self.view.frame.height-30)
pageControl.currentPageIndicatorTintColor = UIColor.redColor()
pageControl.pageIndicatorTintColor = UIColor.whiteColor()
pageControl.numberOfPages = 4
pageControl.addTarget(self, action: "scrollViewDidEndDecelerating", forControlEvents: UIControlEvents.ValueChanged)
//按鈕點擊事件
func buttonClick(button:UIButton)
{
//界面的跳轉
let sb = UIStoryboard(name: "Main", bundle: nil)
let secondVC = sb.instantiateViewControllerWithIdentifier("second")
self.presentViewController(secondVC, animated: true, completion: nil)
}
終于輪到NSUserDefaults出場了!!!
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
//判斷App是否第一次啟動
if(!NSUserDefaults.standardUserDefaults().boolForKey("firstLaunch"))
{
self.window?.rootViewController = ViewController()
self.window?.makeKeyAndVisible()
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "firstLaunch")
}
else
{
let sb = UIStoryboard(name: "Main", bundle: nil)
let secondVC = sb.instantiateViewControllerWithIdentifier("second")
self.window?.rootViewController = secondVC
self.window?.makeKeyAndVisible()
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "firstLaunch")
}
return true
到此已經完成引導頁的編碼,來看一下運行效果吧。
導航頁.gif
記住用戶信息
來看代碼
@IBOutlet weak var userNmae: UITextField!
@IBOutlet weak var password: UITextField!
@IBOutlet weak var rembSwich: UISwitch!
@IBAction func login(sender: UIButton) {
//讀取上次配置
self.userNmae.text =
NSUserDefaults.standardUserDefaults().valueForKey("UserName") as! String!
self.password.text = NSUserDefaults.standardUserDefaults().valueForKey("password")as! String!
self.rembSwich.on = NSUserDefaults.standardUserDefaults().boolForKey("RmbPwdKey") as Bool!
if (self.rembSwich.on){
self.password.text = NSUserDefaults.standardUserDefaults().valueForKey("PwdKey") as! String!
}
NSUserDefaults.standardUserDefaults().setObject(self.userNmae.text, forKey: "UserName")
NSUserDefaults.standardUserDefaults().setObject(self.password.text, forKey: "password")
NSUserDefaults.standardUserDefaults().setBool(self.rembSwich.on, forKey: "RmbPwdKey")
//設置同步
NSUserDefaults.standardUserDefaults().synchronize()
// 讀取上次配置
self.userNmae.text =
NSUserDefaults.standardUserDefaults().valueForKey("UserName") as! String!
self.password.text = NSUserDefaults.standardUserDefaults().valueForKey("password")as! String!
self.rembSwich.on = NSUserDefaults.standardUserDefaults().boolForKey("RmbPwdKey") as Bool!
if (self.rembSwich.on){
self.password.text = NSUserDefaults.standardUserDefaults().valueForKey("PwdKey") as! String!
}
}
運行結果
記住用戶信息.gif