UserDefaultsでデータのやりとりをしたいときの方法。Key-value型でサクッと使える。
アプリの細かなフラグ管理などで、とても便利そう。
<h3> 実行環境 </h3>
Swift:5.0
Xcode:10.2.1
<h3> UserDefaultsでの保存、呼び出し、消去の仕方 </h3>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
import UIKit class ViewController: UIViewController { @IBOutlet weak var textView: UITextView! @IBOutlet weak var saveButton: UIButton! @IBOutlet weak var label: UILabel! @IBOutlet weak var readButton: UIButton! @IBOutlet weak var deleteButton: UIButton! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } @IBAction func saveToUserDefaults(_ sender: Any) { guard let text = textView.text else {return} //Keyを指定して保存 UserDefaults.standard.set(text, forKey: "textViewMemo") //同期 UserDefaults.standard.synchronize() } @IBAction func readFromUserDefaults(_ sender: Any) { //Keyを指定して読み出し guard let savedText = UserDefaults.standard.object(forKey: "textViewMemo") as? String else { self.label.text = "データがありません" return} self.label.text = savedText } @IBAction func deleteDataFromUserDefaults(_ sender: Any) { //削除処理 UserDefaults.standard.removeObject(forKey: "textViewMemo") } } |
setを以下のようにregisterと間違えないこと。registerの値は永続化されない(アプリを切って、再起動したらもうデータは消えている)模様。なお、registerはデフォルト値を指定したいときに使う。
1 |
UserDefaults.standard.register(defaults: ["textViewMemo" : text]) |