Совершенно новый для Swift.

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

class Calculation: ObservableObject {
    var CalcString: String = "test"
    
    func modifyCalcString(newData: String) {
        CalcString = CalcString + newData
        print(CalcString)
    }
}

modifyCalcString вызывается с помощью кнопки в представлении приложения

Calculation().modifyCalcString(newData: digit)

(цифра - это строка)

Моя проблема в том, что каждый раз, когда я вызываю modifyCalcString, она изменяется, а затем возвращается к исходному значению.

Например, при вызове modifyCalString с newData как «5» оператор печати внутри функции выведет «test5», но после его повторной печати он вернется к «test»

Я довольно потерялся здесь и был бы признателен за помощь.

0
Ori Levy 27 Ноя 2021 в 03:11
Хм, мутированный экземпляр хранится где-нибудь, чтобы его можно было использовать в следующий раз?
 – 
jspcal
27 Ноя 2021 в 03:14
Вы должны сделать CalcString приватным.
 – 
Alexander
27 Ноя 2021 в 03:43
Также стоит отметить: соглашение Swift предусматривает резервирование UpperCamelCase исключительно для имен типов. Кроме того, calcString = calcString + newData можно просто записать как calcString += newData
 – 
Alexander
27 Ноя 2021 в 04:00

1 ответ

Лучший ответ

Единственная причина этого в том, что вы не работаете каждый раз с одним и тем же экземпляром класса.

1
Jessy 27 Ноя 2021 в 04:43
1
Да, я продолжал инициализировать класс снова и снова. Спасибо!
 – 
Ori Levy
27 Ноя 2021 в 03:27