值只更新一次?

时间:2016-09-28 02:25:56

标签: ios swift string

我已经创建了一个看起来像这样的网址:

var PROFILE_URL = "\(URL_BASE)\(Info.sharedInstance.platform!)/\(Info.sharedInstance.region!)/\(Info.sharedInstance.text!)/profile"

Info.sharedInstances来自静态变量:

class Info {

static var  sharedInstance = Info()
private init() {}

var region : String!
var platform : String!
var text : String!
}

然后在我点击视图中的某些按钮时设置这些值。

我击中的最后一个按钮是:

   @IBAction func findUserAction(_ sender: AnyObject) {

    if textLabel.text != nil && textLabel.text != "" {
        let formattedString = textLabel.text?.replacingOccurrences(of: "#", with: "-")
        Info.sharedInstance.text = formattedString
        print(PROFILE_URL)

    }

当我第一次点击此按钮时,URL会更新。当我打印出来时,我得到一个URL,无论text.text最终是什么,都会被放入网址。

每次之后,该值都不会更新。在第一次按下按钮之后,我输入的网页打印输出的内容并不重要。

当然,每当我设置Info.sharedInstance.text = formattedString时,它应该更新,之后我就要求按下URL,所以我不明白为什么这样做正在发生。

编辑:好的,如果我打电话

 PROFILE_URL = "\(URL_BASE)\(Info.sharedInstance.platform!)/\(Info.sharedInstance.region!)/\(Info.sharedInstance.text!)/profile" 

直接打印出我按预期工作的URL。我想我的问题更多是为什么我必须这样做。为什么我更改组成URL的Info.sharedInstance值会导致URL不正确,即使我没有回忆设置URL? PROFILE_URL由变量组成,似乎在调用print(PROFILE_URL)时,PROFILE_URL将获取Info.sharedInstance的最新版本。

1 个答案:

答案 0 :(得分:1)

不,你误解了。

如果你有

var string = "woof"

然后是一个像

这样的表达式
var result = "string = \(string)"

评估引用的字符串一次,然后在当时重新使用其当前值的转义变量。

运行该语句后,result包含" string = woof"。如果result中的值发生变化,则string的内容不会发生变化。