Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何从嵌套函数更改变量?_Swift_Macos_Alamofire - Fatal编程技术网

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

Swift 如何从嵌套函数更改变量?,swift,macos,alamofire,Swift,Macos,Alamofire,在嵌套函数作用域内更改变量时,一旦离开作用域,它不会保持更改状态。在我的示例代码中,当我将变量xmlString设置为response时,它将正确地设置为response。然后返回一个空字符串 func getXmlString(url:String)->String{ var xmlString:String=“” 请求(.GET,url) .validate() .responseString{response in xmlString=response.result.value! } 返回

在嵌套函数作用域内更改变量时,一旦离开作用域,它不会保持更改状态。在我的示例代码中,当我将变量xmlString设置为response时,它将正确地设置为response。然后返回一个空字符串
func getXmlString(url:String)->String{
var xmlString:String=“”
请求(.GET,url)
.validate()
.responseString{response in
xmlString=response.result.value!
}
返回xmlString
}


我知道我缺少的只是一件小事,任何帮助我更好地了解我的处境都会帮助我走出困境。谢谢阿拉莫菲尔是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
}

有什么方法可以像我预期的那样正常返回字符串值吗?
func-getXmlString(url:string,completion:(xmlString)->(string))
使用:
getXmlString(url){(xmlString)->string-in-return-xmlString}
它将像你预期的那样正常返回
字符串值
这正是我想要的,但是,它返回“()”而不是get请求中的字符串,该字符串不是响应。