前提・実現したいこと
ボールゲームを作成中です
ゲームが終了した後、ポイントが表示され、そのポイントをショップ画面で見れるように、今あるポイントにゲーム終了後にもらえるポイントを足すプログラムを作っているます。
UserDefaultsにポイントを保存させたのですが...
(Printでユーザーデフォルトの中身の値とlabelに表示させるようの変数の値を表示させています)
ポイントをもらえる画面からショップに行った時
UserDefaults 今のポイント
Label用Point 今のポイント
ショップ画面を閉じてもう一度ショップ画面を開くと
UserDefaults 0
Label用Point 今のポイント
もう一度ショップを開くと
UserDefaults 0
Label用Point 0
ポイントをもらえる画面からホーム画面に移動してからショップ画面を開いた時は
UserDefaults 0
Label用Point 0
になってしまいます...
UserDefaultsを永続化させる方法、考え方を教えてください
該当のソースコード
swift
1import UIKit 2 3class ViewControllerShop: UIViewController { 4 @IBOutlet weak var PointLabel: UILabel! 5 6 var userDefaults = UserDefaults.standard 7 var getPoint2 = 0 8 var getPointUD = 0 9 10 override func viewDidLoad() { 11 super.viewDidLoad() 12 13 saveData() 14 PointLabel.text = String(getPointUD) + " PT" 15 print("ゲットポイント" + String(getPointUD)) 16 print("ユーザーデフォルト" + String(userDefaults.integer(forKey: "DataGetPoint"))) 17} 18 19 func saveData(){ 20 getPointUD = userDefaults.integer(forKey: "DataGetPoint") 21 userDefaults.set(getPoint2, forKey: "DataGetPoint") 22 userDefaults.synchronize() 23 getPointUD = getPointUD + userDefaults.integer(forKey: "DataGetPoint") 24 } 25 26 27}
試したこと
userDefaults.synchronize()
を入れるとUserDefaultsの永続化が可能だとネットで知ったので入れてみた。
データを保存し、永続化するメソッド。
データを保存した際に登場する。
よく忘れてしまうので注意が必要。
一旦UserDefaultsの値を保存するための変数getPointUD
を用意した
補足情報(FW/ツールのバージョンなど)
MacBookPro2015
MacOSCatalina
10.15.2
XcodeVersion 11.2.1
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/07 06:06
2020/01/07 07:15
2020/01/07 09:14
2020/01/08 09:45