我想一个全局变量从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