类内声明的字符串不断恢复为原始值

Posted

技术标签:

【中文标题】类内声明的字符串不断恢复为原始值【英文标题】:Declared string inside class keeps reverting to original value 【发布时间】:2021-11-27 00:11:32 【问题描述】:

Swift 的新人。

我遇到了一个问题,即类中声明的字符串在我修改后不断恢复到其原始值。

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

modifyCalcString 在应用视图中使用按钮调用

Calculation().modifyCalcString(newData: digit)

(数字是字符串)

我的问题是每次我调用 modifyCalcString 时都会对其进行修改,然后恢复为原始值。

例如,当使用 newData 为“5”调用 modifyCalString 时,函数内的打印语句将输出“test5”,但在再次打印后又恢复为“test”

我在这里迷路了,希望能得到帮助。

【问题讨论】:

hmm 是变异实例存储在任何地方,以便下次使用? 你应该将CalcString设为私有。 另外值得注意的是:Swift 约定是专门为类型名称保留UpperCamelCase。另外,calcString = calcString + newData 可以写成calcString += newData Calculation()Calculation.init() 的缩写,表示您正在创建一个新的对象/实例。因此,如果您多次这样做,当然,您每次都会有一个初始字符串值为 "test" 的新对象。 【参考方案1】:

唯一的原因是您不是每次都使用同一个类实例。

【讨论】:

是的,我一遍又一遍地初始化类。谢谢!

以上是关于类内声明的字符串不断恢复为原始值的主要内容,如果未能解决你的问题,请参考以下文章

将 Base64 字符串解码为字节数组

无法在类内第二次设置字符串类型[关闭]

如何初始化声明为局部变量的记录?

JavaScript

引用类型转换为原始值(基本类型)

原始对象和包装对象