我写了一个函数,我猜它应该返回一个布尔值,我正在使用完成处理程序和switch以及if语句 这是我的代码:
class func login(username : String , password : String, _ completion: @escaping (Bool) -> ()) {
let url = "http://127.0.0.1:3000/login/"+username+"/"+password
Alamofire.request(url).responseJSON{response in
switch response.result
{
case .failure:
print(response)
completion(false)
case .success:
if let dict = response.value as? NSDictionary {
let dict = response.value as? NSDictionary
let user = dict!["users"] as? NSArray
if user!.count > 0 {
print(user!.count)
completion(true)
}
else {
print(user!.count)
completion(true)
}
}
}
}
}
我想这样使用它:
@IBAction func LoginBtn(_ sender: Any) {
API.login(username: textUsername.text!, password: textPassword.text!) {
success in
if success{
// if the function return true print(hello)
//else print (type again)
print("Welcome")
}
else{
print("NO")
}
}
}
答案 0 :(得分:0)
NSArray
和NSDictionary
,而要使用本机类型。.count > 0
检查空数组或空字符串。有一个优化的属性isEmpty
您的代码非常繁琐,并且其中包含一些多余的部分。
如果true
数组有效且不为空,则逻辑返回users
,否则返回false
。
因此success
分支可以简化为
case .success:
if let dict = response.value as? [String:Any], let users = dict!["users"] as? [[String:Any]], !users.isEmpty {
completion(true)
} else {
completion(false)
}