以下の様な構造体をまず作ります。
swift
1struct Preference { 2 static let userDefault = UserDefaults.standard 3 4 struct Key { 5 6 static let All_data = "all_data" 7 } 8} 9 10extension Preference { 11 12 static var all_data:Dictionary<String,Double>? { 13 get{ 14 return userDefault.object(forKey: Key.All_data) as? Dictionary<String,Double> 15 16 } 17 set { 18 userDefault.set(newValue, forKey: Key.All_data) 19 userDefault.synchronize() 20 } 21 22 } 23 24}
UserDefaults.standardにDictionary<String,Double>型で値を保存して行きたいです。
保存する際は以下の様にしています。
Swift
1//~~~~~~~省略~~~~~~~~~~~~~ 2Preference.all_data = Dictionary<String,Double>() 3 4//~~~~~~~省略~~~~~~~~~~~~~ 5@IBAction func hoge(_ sender: Any) { 6 Preference.all_data![current_work.text!] = time//timeはDouble型 7 print(Preference.all_data) 8} 9//~~~~~~~省略~~~~~~~~~~~~~
実行するたびにキーと値は変わってPreference.all_data![current_work.text!] = timeが実行されます。そのためいくつかのキーと値がPreference.all_dataに追加されて行くと思ったのですが、hogeが実行されるたび中身が更新されてしまい例えばプリントした値は以下の様になるのですが
1回目
Optional(["22222": 3.6983799934387207])
二回め
Optional(["444444": 1.8419320583343506])
の様に要素が1つしか保存されません。。。これはなぜでしょうか?Preference.all_data = Dictionary<String,Double>()の位置が悪くて毎回初期化されてしまっているとかそういうことでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。