我想一個全局變量從alamofire變量中改變內改變,但我有問題這樣做。這裏是我的代碼:無法全局變量從功能
var projects = [[String]]()
var xmlToParse = String()
var postTitle = String()
var postLink = String()
override func viewDidLoad() {
super.viewDidLoad()
httpRequest("https://www.hello.com/feed") { response in
self.xmlToParse = response as String
let xml = SWXMLHash.parse(self.xmlToParse)
for elem in xml["rss"]["channel"]["item"].all {
self.postTitle = elem["title"].element!.text
self.postLink = elem["link"].element!.text
self.projects.append([self.postTitle, self.postLink])
}
}
print(self.projects)
}
當我在這裏打self.projects,我得到一個空數組,但是當我打印出來的HttpRequest的功能我得到正確的數據內。我是不是在for循環中設置全局變量項目?我怎樣才能獲得該功能以外的價值?我嘗試了所有我發現的一切,但沒有成功。任何幫助是極大的讚賞。
只是爲了更多的信息,這裏是我的HttpRequest功能:
func httpRequest(_ section: String, completion: @escaping (String) -> Void) {
Alamofire.request(section, method: .get).responseString { response in
completion(response.result.value!)
}
}
這是因爲即使在httpRequest函數調用完成處理程序之前您正在打印self.projects。 – koropok
嗯..那麼我怎樣才能得到它,這樣的項目數組可以訪問ViewDidLoad中的適當的數據,以及在其他功能? –
爲什麼不把你的邏輯放在完成處理程序中? – koropok