【发布时间】:2018-04-19 03:56:51
【问题描述】:
我想创建一个带有 textField 和标签的应用程序。 textField 将读取输入并使用 Alamofire 检查输入是否存在。 (url 将返回 JSON Bool。)一个名为 getReturnVal 的辅助函数用于从 url 中获取返回值。
但是,nameExist 变量始终为 nil,并且辅助函数似乎从不涉及这两种情况。请告知我应该如何解决这个问题。
提前谢谢你。
我的代码如下。
导入 UIKit
导入 Alamofire
类 ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var nameField: UITextField!
@IBOutlet weak var nameLabel: UILabel!
var nameValid: Bool = false
func textFieldDidEndEditing(_ textField: UITextField) {
if textField == nameField {
guard let username = textField.text, !username.isEmpty else {
nameValid = false
return
}
let url = "https://bismarck.sdsu.edu/hometown/nicknameexists?name=" + username
print(url)
let nameExist = getReturnVal(url: url, type: Bool.self)
if nameExist! {
nameLabel.text = "Exist"
nameValid = false
} else {
nameLabel.text = "Valid"
nameValid = true
}
}
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
func getReturnVal<T>(url: String, type: T.Type) -> T? {
var jsonObject: T?
print("enter------------")
Alamofire.request(url).validate().responseJSON { response in
switch response.result {
case .success:
if let JSON = response.result.value {
jsonObject = (JSON as! T)
print("SUCCESS--------")
print("JSON: \(String(describing: jsonObject))")
}
case .failure(let error):
print("--------------")
print(error)
jsonObject = false
}
}
return jsonObject
}
override func viewDidLoad() {
super.viewDidLoad()
nameField.delegate = self
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
【问题讨论】:
标签: ios swift request alamofire