LoginSignup
3
4

More than 3 years have passed since last update.

【swift】userDefaultsへの書き込み・読み込みを簡易化する

Last updated at Posted at 2020-01-16

環境

xcode 11.3
swift 5.1.3
CocoaPods 1.8.4

方針

@noby111さんの記事「Swifterを自分のアプリに組み込む方法」を参考にしていた時に以下の方法がさらっと用いられていていいなと思ったので、これだけでまとめました。

AppStatusクラスを作って、クラス変数にアクセスする方法でuserDefault内のデータにアクセスできるようにする

let appData = AppStatus()

//データの入力
appData.username = "test user"
// データの出力
print(appData.username)
出力
test user

実装

AppStatus.swiftファイルを新たに作成し、以下を記述

AppStatus.swift
import Foundation
import UIKit

class AppStatus {
    var userdefault = UserDefaults.init(suiteName: "app_status")!

    // usernameの設定
    var username : String? {
        get {
            if let username : String = userdefault["username"] {
                return username
            } else {
                return nil
            }
        }

        set {
            userdefault["username"] = newValue
        }
    }
}

extension UserDefaults {
    subscript<T: Any>(key: String) -> T? {
        get {
            if let value = object(forKey: key) {
                return value as? T
            } else {
                return nil
            }
        }

        set(_newValue) {
            if let newValue = _newValue {
                set(newValue, forKey: key)
            } else {
                removeObject(forKey: key)
            }
            synchronize()
        }
    }
}

usernameの部分と型を変更すればuserDefaulに保存可能な任意のデータ型を扱うことができる。
これ便利。

userDefaultsの使い方

ちなみに、userDefaultとはなんぞや、とかどうやって使うの、とかは以下の記事が参考になりました。

qiita : swift4 超初心者向け!"UserDefaults"の使い方とか 忘備録

qiita : UserDefaultsの使い方

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4