如何从嵌套函数中更改变量?

时间:2016-07-02 02:39:13

标签: swift macos alamofire

在嵌套函数范围内更改变量时,一旦保留范围,它就不会保持更改状态。在我的示例代码中,当我将变量xmlString设置为等于响应时,它正确地设置为响应。但是然后返回一个空字符串。
func getXmlString(url: String) -> String { var xmlString: String = "" Alamofire.request(.GET, url) .validate() .responseString { response in xmlString = response.result.value! } return xmlString } 我知道我遗失了一件小事,任何帮助更好地了解我的情况都会帮助我。感谢

1 个答案:

答案 0 :(得分:1)

Alamofire是acsynchonus。这就是为什么你的xmlString为空。您应该等到Alamofire收到回复。

 func getXmlString(url: String, completion: (xmlString: String) -> ()) {
            var xmlString: String = ""
            Alamofire.request(.GET, url)
                .validate()
                .responseString { response in
                    xmlString = response.result.value!

                 completion(xmlString)
             }
}

并使用它

getXmlString(url: String){ xmlString in

//do something with your String
}