我有一些文字字段的视图。当用户单击“完成”时,我验证每个字段不为空。其中两个字段是电子邮件地址和用户名字段。我想验证我的数据库中是否尚未使用电子邮件地址和用户名。
我已经构建了一个执行检查的HTTP请求,但其余代码在我收到回复之前执行。
if username.text == "" {
// Alert user
return
}
if email.text == "" {
// Alert user
return
}
let server = ServerController() // Custom HTTP request object I made
server.DoesUsernameExist(username: username.text!)
server.DoesEmailExist(email: email.text!)
// Properties server.usernameExists and server.emailExists begin as nil and are set to true or false with server.DoesUsernameExist() and server.DoesEmailExist()
if server.usernameExists == true {
// Alert user
return
}
if server.emailExists== true {
// Alert user
return
}
server.CreateProfile(/* parameters */) // Creates a new entry in the database
但是当执行server.CreateProfile()时,属性server.usernameExists和server.emailExists仍为nil。
我会喜欢这样简单的事情:
let emailExists = server.DoesEmailExist(email: email.text!)
if emailExists == true {
// Alert user
return
}
但没有运气。我不熟悉在Swift中做HTTP请求。
任何建议都会受到欢迎。谢谢!
答案 0 :(得分:0)
不幸的是,简单的代码在技术上是不可能的。你不能简单地写一下,因为对服务器的调用是异步操作(它会随着时间的推移发生,而不是像a = 2 + 2操作那样立即发生)。因此,最好的办法是使用在服务器响应请求后触发的回调。这将是一些内容:
或者,您可以将其拆分为几个步骤,在用户输入名称后,他必须按下按钮,之后您将禁用UI并等待服务器响应。如果成功,则继续执行步骤2,等等。希望这会有所帮助。