iOS开发之简单用户数据存储UserDefaults

来源:互联网 发布:vue.js从入门到精通 编辑:程序博客网 时间:2024/05/29 14:30

在iOS开发中,有时候需要保存用户数据,但是数据量又不是很多,用SQLite3觉得不大合适,这时候用UserDefaults偏好设置是一个不错的选择。用UserDefaults保存的数据会保存在沙盒Library/Preferences目录下,文件格式是plist。UserDefaults支持的数据格式有:NSNumber(Integer、Float、Double),NSString,NSDate,NSArray,NSDictionary,BOOL,NSData类型等等


////  ViewController.swift//  UserDefaultSettingSave////  Created by 凌       陈 on 7/25/17.//  Copyright © 2017 凌       陈. All rights reserved.//import UIKitclass ViewController: UIViewController {    @IBOutlet weak var intLabel: UILabel!    @IBOutlet weak var floatLabel: UILabel!    @IBOutlet weak var stringLabel: UILabel!    override func viewDidLoad() {        super.viewDidLoad()        // Do any additional setup after loading the view, typically from a nib.                let libraryPath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.libraryDirectory,FileManager.SearchPathDomainMask.userDomainMask, true)[0]        print("沙盒地址:\(libraryPath)")                setLabel()        saveData()        readData()    }    override func didReceiveMemoryWarning() {        super.didReceiveMemoryWarning()        // Dispose of any resources that can be recreated.    }        func setLabel() {                intLabel.font = UIFont.systemFont(ofSize: 20.0)        intLabel.textColor = UIColor.blue        intLabel.textAlignment = .left                floatLabel.font = UIFont.systemFont(ofSize: 20.0)        floatLabel.textColor = UIColor.blue        floatLabel.textAlignment = .left                stringLabel.font = UIFont.systemFont(ofSize: 20.0)        stringLabel.textColor = UIColor.blue        stringLabel.textAlignment = .left            }    func saveData() {                var number = 110103024        var price = 10.34        var description = "此商品富含维生素C!"                        UserDefaults.standard.set(number, forKey: "number")        UserDefaults.standard.set(price, forKey: "price")        UserDefaults.standard.set(description, forKey: "description")    }        func readData() {                let number = UserDefaults.standard.integer(forKey: "number")        intLabel.text = "商品编号: " + "\(number)"                let price = UserDefaults.standard.float(forKey: "price")        floatLabel.text = "商品价格: " + "$" + "\(price)"                let description = UserDefaults.standard.string(forKey: "description")        stringLabel.text = "商品描述: " + description!    }}


运行截图:



运行过一次后,将代码中的ViewDidLoad中的saveData()屏蔽掉,再次运行,看到的结果还是一样!因为数据已经写到plist文件保存到本地了,readData()是从本地的plist文件中读取数据的。在哪里可以找到plist文件呢?复制控制台打印的地址,在Finder中,shift + commamd + g快捷键,粘贴复制的地址,去到Lirary目录,打开Preferences目录,可以看到一个plist文件,用文本编辑器打开plist文件,可以看到里面是你保存的那些信息。


Library

Library

Library

Library