CocoaPodsからSwiftyUserDefaultsを導入してみた


はじめに

SwiftyUserDefaultsの導入について備忘録としてまとめます。

導入の動機としては、SwiftのUserDefaultの使い勝手の悪さから、代替手段を模索していたところ
最終的にこのライブラリに辿り着いきました。

目次

  • プロジェクトへpodインストール
  • 実装方法
    • インポート
    • 定義と初期化
    • 値の保存方法
    • 値の読み出し方法
  • まとめ

プロジェクトへpodインストール

まずは、CocoaPodsをお使いのMacにインストールしておきます。

CLI
//コマンドラインで実行
pod init
Podfile
//Podfileへ下記をコードを追加
pod 'SwiftyUserDefaults', '~> 5.0'
CLI
//コマンドラインで実行
pod install

インポート

SwiftのUserDefaultを使うファイルに対し下記コードを挿入します。

.swift
import SwiftyUserDefaults

定義と初期化

まずは、プロジェクトへ定義する為のファイルを追加し、そこへ永続化したいキーを定義します。
SwiftyUserDefaultsでは定義と同時に初期値も指定できるので便利です。

DefaultsKeys.swift

import SwiftyUserDefaults

extension DefaultsKeys {
    //初期値指定なし
    var test_str_nv: DefaultsKey<String?> { .init("Test_Str_NV") }
    var test_int_nv: DefaultsKey<Int?> { .init("Test_Int_NV") }

    //初期値指定あり
    var test_str_v: DefaultsKey<String> { .init("Test_Str_V", defaultValue: "初期値をここへ指定") }
    var test_int_v: DefaultsKey<Int> { .init("Test_Int_V", defaultValue: 777) }

}

値の保存方法

read.swift
Defaults[\.test_str_nv] = "文字列を代入"
Defaults[\.test_int_nv] = 777

値の読み出し方法

write.swift
let read_str = keys[Defaults[\.test_str_nv]]
let read_int = keys[Defaults[\.test_int_nv]]

まとめ

SwiftyUserDefaultsを導入することにより、
*  Swift純正のUserDefaultよりも実装するコード量が減らすことができる
*  定義及び初期化する部分を一つのファイル内に集約できて分散防止が可能
*  値の保存及び読み出しが従来の様に文字列指定ではなく、変数指定になることでタイピングミスによる予期せぬ不具合を未然に防げる。
*  メンテナンスが楽になる
となります。

参考