之前,这是我的代码:等待此完成处理程序完成执行的函数返回的价值
func authenticateCredentials(usernameString: String, passwordString: String) ->() -> Bool {
func isAuthUser() -> Bool {
client.invokeAPI("AuthenticateAndFetchData",
body: nil,
httpMethod: "GET",
parameters: ["userid": usernameString,"password":passwordString],
headers: nil)
{
(result, response, error) -> Void in
if let err = error {
print("ERROR ", err)
} else if let res = result {
let jsonArray = res as! NSArray
for value in jsonArray[0] as! NSDictionary {
let jsonstring = value.value as! String
NetworkService.jsonResponse = jsonstring
if let data = jsonstring.data(using: .utf8) {
if let content = try? JSONSerialization.jsonObject(with: data, options: []),
let array = content as? [[String: Any]]
{
for jsondict in array {
let auth = jsondict["IsAuth"]! as! String
self.isAuth = (auth == "true") ? true : false
let substring = NetworkService.parseJSONString(jsonString: jsonstring, key: "Activities")
let substring2 = NetworkService.parseJSONString(jsonString: substring(), key: "activityname")
let activityString = NetworkService.parseJSONvalue(jsonString:substring())
}
}
}
}
}
}
return self.isAuth
}
return isAuthUser
}
}
我请登录按钮,此功能。但是当我用正确的凭证第一次按下按钮时,此函数返回false
,当我再次按下时,则完成处理程序已执行,它将isAuth
更改为true,并且该函数返回true。
所以,我必须按两次按钮才能进行身份验证,我如何才能使它仅在第一次返回true。我希望在函数返回之前等待完成块的执行。
而不是从你的函数返回true或false。将其称为异步并将您的代码放入完成处理程序 –
感谢您的回应。我是新来的迅速。你能帮我吗我该怎么称呼功能异步。 –