在一系列命令中执行HTTP请求的最方便方法(SWIFT)



我有一些文本字段的视图。当用户单击"完成"时,我会验证每个字段不是空的。其中两个字段是电子邮件地址和一个用户名字段。我想验证我的数据库中尚未使用电子邮件地址和用户名。

我已经构建了一个执行检查的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()时,properties server.usernameexists和server.emailexists仍然为零。

我会喜欢这样简单的东西:

let emailExists = server.DoesEmailExist(email: email.text!)
if emailExists == true {
    // Alert user
    return
}

,但对此没有任何运气。我是新手在Swift中进行HTTP请求的新手。

任何建议都将受到欢迎。谢谢!

不幸的是,从技术上讲这是不可能的代码。您不能简单地写这句话,因为对服务器的调用是异步操作(随着时间的推移会发生,而不是立即发生= 2 2操作)。因此,最好的选择是使用服务器响应请求后会触发的回调。这将是线之内的东西:

  1. 用户在名称中类型后,您可以启动API调用服务器并添加标志着正在进行的标志。
  2. 如果在用户提交注册之前已收到对呼叫的响应 ->您通过显示它不是唯一的消息来相应地更新UI
  3. 如果时间用户按提交时间未收到响应,则禁用所有UI元素,显示活动指示器并等待该调用的响应
  4. (3a)如果收到时的响应说这是独特的用户名您继续注册,否则您可重新启用UI和向用户提供用户名的反馈。

另外,您可以将其分为几个步骤,在用户输入名称后,他必须按下按钮,之后您禁用UI并等待服务器响应。如果成功的话,您将继续步骤#2,等等。希望这会有所帮助。

最新更新