在一系列命令中执行HTTP请求的最便捷方式(Swift)

时间:2017-12-08 18:54:22

标签: swift httprequest

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

我已经构建了一个执行检查的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请求。

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

1 个答案:

答案 0 :(得分:0)

不幸的是,简单的代码在技术上是不可能的。你不能简单地写一下,因为对服务器的调用是异步操作(它会随着时间的推移发生,而不是像a = 2 + 2操作那样立即发生)。因此,最好的办法是使用在服务器响应请求后触发的回调。这将是一些内容:

  1. 用户输入名称后,启动对服务器的API调用并添加 标志着它正在进行中。
  2. 如果在用户提交注册之前收到对此来电的回复 - >您通过显示消息表明它不是唯一的
  3. 来相应地更新UI
  4. 如果用户按下提交时未收到回复,则禁用所有UI元素,显示活动指示符并等待该呼叫的响应
  5. (3a)如果收到回复,则表示其唯一的用户名 你继续注册,否则你重新启用UI和 向用户提供用户名存在的反馈。
  6. 或者,您可以将其拆分为几个步骤,在用户输入名称后,他必须按下按钮,之后您将禁用UI并等待服务器响应。如果成功,则继续执行步骤2,等等。希望这会有所帮助。