ユーザデータを設定する基本クラス

複数のViewで扱えるようにObservableObjectにする

class UserData: ObservableObject {
  ...
}

変更した場合に自動的にUserDefaultsに入れられるように以下のようにdidSetを使ってメンバー設定

@Published var member:XXX {
   didSet {
      UserDefaults.starndard.set(value, forKey: key)
   }
}

メンバーリスト

currentLanguage:String
アプリの言語設定。現在は、'en', 'ja' のみ対応
historyData:[String]
資産の履歴。将来的にチャート化するために履歴を残す。日付と金額(構造未決定)
lastUpdate: Date
最終更新日
dollerRate: Double
ドル/円のレート
vcChecked: Bool
仮想通貨を更新対象にするかのチェック
pmChecked: Bool
貴金属(現物資産)を更新対象にするかのチェック
fcChecked: Bool
外国通貨を更新対象にするかのチェック
vcAsset: Int
仮想通貨の総額(円)
pmAsset: Int
貴金属の総額(円)
fcAsset: Int
外国通貨の総額
binanceAsset:Dictionary<String,Double>
binanceの資産 [通貨:金額]
poloniexAsset:Dictionary<String,Double>
poloniexの資産 [通貨:金額]
coincheckAsset:Dictionary<String,Double>
coincheckの資産 [通貨:金額]
sbivcAsset:Dictionary<String,Double>
SBI VCの資産 [通貨:金額]
vc: VcAssetClass = VcAssetClass()
仮想通貨取引所のAPI key, secret の構造体
struct VcAssetClass {
    var isChecked:Bool = true
    var keySecs:Dictionary<String, KeySec> = [
        "Binance":.init(name:"Binance"),
        "Poloniex":.init(name:"Poloniex"),
        "Coincheck":.init(name:"Coincheck"),
        "SBIVC":.init(name:"SBIVC")
    ]
}

KeySecは、API key, secret を格納する構造体。 メンバーは、以下ですべてキーチェーンに格納する。

  • 更新対象か示す isChecked:Bool
  • API keyを格納する apiKey:String
  • secretを格納する secret:String