我有一个Bool类型的局部变量初始化为FALSE。我试图根据特定条件在try块中设置this的值。条件为真,值变为真。检查块内外的值时,它们是不同的。在里面是真的,在外面它需要初始值,即;假的。
/**
* Single view of a news record
*
* @param \Vendor\Ext\Domain\Model\News $news news item
*/
public function detailAction(\Vendor\Ext\Domain\Model\News $news = null)
" statusValue"的值打印不同。在里面它设置为True,在它外面打印False。
答案 0 :(得分:0)
当您的代码同步时,从函数返回值有效但在您的情况下,您正在进行网络请求(异步调用),因此结果将在毫秒或秒之后可用,然后返回一个值没有任何意义。
相反,你可以"返回"使用闭包的结果如下:
func Print( completion: @escaping (_ statusValue: Bool) -> Void ) -> Void {
var statusValue:Bool = False
let request: Request = Request()
let body: NSMutableDictionary = NSMutableDictionary()
do{
try request.post(url: url, body: body, completionHandler: { data, response, error in
if error != nil{
print(error?.localizedDescription)
completion(false)
return
}
let statuscode = response as? HTTPURLResponse
if statuscode?.statusCode == 200 {
print("Success")
statusValue = True
completion(statusValue)
}
else{
completion(false)
}
})
}
catch{
completion(false)
}
}
调用该函数时:
Print(completion: { statusValue in
print(statusValue)
})