「ゴルトン社長」のはじめの一歩

すげーブログ

世の中のすげーを伝える!

【iphoneアプリ開発_初心者必見】UserDefalutsの基礎・基本

UserDefalutsの基礎・基本

  • UserDefaults:iosアプリ内にデータを保存する方法の一つ
  • 保存したのは文字列だから他の型を保存したい場合は適宜変更が必要
  • UserDefaultsは手軽にデータの永続化が可能であるため,多くの場面で利用される機能
  • アプリ設定の保存で頻繁に使用する

人気の記事!

人生を変えたい人に向けて「はじめの一歩」を踏み出したい人にオススメ!

www.goruton.com www.goruton.com www.goruton.com www.goruton.com

  1. インスタンスの作成
UserDefaults.standard
  1. 保存
UserDefaults.standard.set(true, forKey: "boolKeyName")
UserDefaults.standard.set(1, forKey: "integerKeyName")
  1. 読み込み
UserDefaults.standard.bool(forKey: "boolKeyName")
UserDefaults.standard.integer(forKey: "integerKeyName")
  1. 削除
UserDefaults.standard.removeObject(forKey: "keyName")
  1. 存在チェック
if UserDefaults.standard.object(forKey: "KeyName") != nil { ... }

具体的なアプリ・コード例

  • UITextFieldに値を入れてアプリを閉じても,再度開いた時に値の読み込みを行い表示してくれる

f:id:BlueThree:20190625212534p:plain
MainStoryBoard

//
//  ViewController.swift
//2019/06/25
import UIKit

//UITextFieldDelegate が重要
class ViewController: UIViewController, UITextFieldDelegate  {
    //入力した値をアプリ再起動しても、値が保持される
    @IBOutlet var workPlaces:UITextField!
    //①なんでも良いから初期値として設定しておく。(今回は空)
    var testText:String = ""
    //②UserDefaults のインスタンス
    let userDefaults = UserDefaults.standard
    //ページが開かれた時に,一番最初に動作する関数
    override func viewDidLoad() {
        super.viewDidLoad()
        // textFiel の情報を受け取るための delegate を設定(重要)
        workPlaces.delegate = self
        // デフォルト値
        userDefaults.register(defaults: ["DataStore": ""])
        workPlaces.text = readData()
    }
    
    //この関数がviewdidload時に読み込まれて保存したデータの読み込み作業をしている。
    func readData() -> String {
        // Keyを指定して読み込み
        let str: String = userDefaults.object(forKey: "DataStore") as! String
        return str
    }
    
    //viewDidLoad()内でworkPlaces.delegateを書いていないと、この関数が動作しない。
    //ここはシュミレーターのreturnキーを押した時に動く。
    func textFieldShouldReturn(_ textField: UITextField) -> Bool{
        //内容を①へ代入。
        testText = workPlaces.text!
        workPlaces.text = testText
        // 特定のUITextFieldやUITextViewの状態を変更することができる
        workPlaces.resignFirstResponder()
        //(保存したいデータ)を引数として以下の関数へ
        saveData(str: testText)
        return true
    }
    //関数内のuserDefaults.setで保存している。
    func saveData(str: String){
        // Keyを指定して保存
        userDefaults.set(str, forKey: "DataStore")
    }
    //memory warningが発生したときに呼び出されるファンクション
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

参考リンク

最後に!!

f:id:BlueThree:20200805191056j:plain:w500

最後までご覧いただき、本当にありがとうございます!!

最近は、たくさんの読者さんから「コメント」や「メッセージ」が届くようになりました!!
皆さんと会話できて嬉しいですし、コメントで毎日励まされています。

ありがとうございます!

これからも、ゴルトン社長は「毎日」ブログを更新しています! www.goruton.com www.goruton.com www.goruton.com www.goruton.com www.goruton.com

皆さんから人気がある記事

www.goruton.com www.goruton.com www.goruton.com www.goruton.com www.goruton.com

まとめ記事

www.goruton.com www.goruton.com www.goruton.com www.goruton.com www.goruton.com www.goruton.com www.goruton.com