在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 UIKit
class 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