接續昨天的問題,如果要在 tab bar個分頁中互傳資料的話,我目前找到一個方法:就是先把資料存起來,讓後在另一個分頁直接讀取,那個儲存功能就是 UserDefaults,但是這個方法只適用少量的資料,如果資料量太龐大就不適合了。今天就來簡單介紹這個儲存方法。
UserDefaults 儲存資料的語法
UserDefaults.standard.set(Value: Any?, forKey: String)
在Xcode中輸入 UserDefaults.standard.set 可以看到
Value不限定格式,可以是 Bool,Int,Double,Float...
forKey就是這筆資料的名稱,資料型態就限定為String
UserDefaults 讀取資料的語法
UserDefaults.standard.object(forKey: String)
只有輸入指定的資料名稱,就可以撈出我們要的資料了
從元件庫拉一個 Text Field 元件和一個 Button 元件進Main.storyboard,並把這兩個元件用藍線拖曳進 ViewController.swift
@IBOutlet weak var textField: UITextField!
@IBAction func save(_ sender: Any) {
}
在按鈕加入以下function
@IBAction func save(_ sender: Any) {
UserDefaults.standard.set(textField.text, forKey:"userName")
}
在 ViewDidLoad 中加入以下code
override func viewDidLoad() {
super.viewDidLoad()
if let name = UserDefaults.standard.object(forKey: "userName") as? String {
textField.placeholder = name
textField.text = ""
}
}
textField.placeholder 是 Text Field元件中的一個屬性,可以顯示預設值,這邊我們把預設值設為使用者輸入的文字
EX. 使用者輸入 Kao,並按下按鈕。重開 App 後,就會顯示Kao。效果如下: