Инкремент UILabel из значения UserDefaults - Swift - PullRequest
0 голосов
/ 08 марта 2019

Я создаю счетчик и хотел бы иметь возможность увеличивать на 1 при каждом нажатии кнопки, что обновляет мою UILabel и сохраняет в UserDefaults. Я могу прекрасно сохранять и получать значения, но когда я снова нажимаю кнопку, число возвращается к единице.

Вот мой код

override func viewDidLoad() {
        super.viewDidLoad()
        if let save = UserDefaults.standard.object(forKey: "points1") as? String
        {
            teamOnePoint.text = save
            print(save)
        }

        // Do any additional setup after loading the view.
    }


    @IBAction func teamOneButtonPressed(_ sender: Any) {
        pointScore1 += 1
        teamOnePoint.text = "\(pointScore1)"
        UserDefaults.standard.set(teamOnePoint.text, forKey: "points1")

    }

Ответы [ 2 ]

1 голос
/ 08 марта 2019

Вы никогда не установите pointScore1 на значение, полученное из UserDefaults.

Начните с получения и сохранения значения Int, а не String.

override func viewDidLoad() {
    super.viewDidLoad()

    pointScore1 = UserDefaults.standard.integer(forKey: "points1")
    teamOnePoint.text = "\(pointScore1)"
}

@IBAction func teamOneButtonPressed(_ sender: Any) {
    pointScore1 += 1
    teamOnePoint.text = "\(pointScore1)"
    UserDefaults.standard.set(pointScore1, forKey: "points1")
}

Обратите внимание, что после новой установки приложения начальное значение будет 0. Разобраться с этим по желанию.

0 голосов
/ 08 марта 2019
 override func viewDidLoad()
{
    super.viewDidLoad()

    if let save = UserDefaults.standard.object(forKey: "points1") as? String
    {
         print(save)
    }
}

@IBAction func btnIncrTap(_ sender: Any)
{
    pointScore1 += 1
    UserDefaults.standard.set(pointScore1, forKey: "points1")
    print(String(describing: UserDefaults.standard.object(forKey: "points1")))
}
...