我已經得到了我已經創建了一個看起來像一個URL:值只更新一次?
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是什麼,它都會被放入url中。
每次之後,該值都不會更新。無論我輸入的網址是什麼,它都會打印出來,因爲它是在按下第一個按鈕之後。
當然,每次我設置Info.sharedInstance.text = formattedString它應該更新,並在此之後,我要求URL被按下,所以我不明白爲什麼會發生這種情況。
編輯:好吧,如果我將它按預期工作URL的打印完成後調用
PROFILE_URL = "\(URL_BASE)\(Info.sharedInstance.platform!)/\(Info.sharedInstance.region!)/\(Info.sharedInstance.text!)/profile"
直接。我想我的問題更多的是爲什麼我必須這樣做。爲什麼如果我更改構成URL的Info.sharedInstance值,即使我不記得設置URL,該URL也不正確? PROFILE_URL由變量組成,看起來像打印(PROFILE_URL)被調用時,PROFILE_URL將獲取Info.sharedInstance的最新版本。
'PROFILE_URL'是公共變量,與'(Info.sharedInstance.platform'不同,PROFILE_URL在設置新值後會改變,它不會自行改變,沒有'PROFILE_URL'的觀察者/監聽者以瞭解Info.sharedInstance.platform是否已更改 – xmhafiz