【问题标题】:Swift returning optional valueSwift 返回可选值
【发布时间】:2017-05-22 02:25:52
【问题描述】:

我目前正在开发一个 Xcode 应用程序,该应用程序允许用户通过将数据发送到我的 MySQL 数据库来进行注册。我只有几个问题。

我遇到的第一个问题是在第 10、13、15 行。我收到了一条警告,上面写着:“字符串插值会为可选值生成调试描述;您是要明确说明吗?”无论如何我可以更改我的代码以使该值不是可选的吗?

此外,发送的响应字符串的措辞如下:“responseString = Optional(此用户名可用)”。我正计划使用响应字符串向用户显示信息。无论如何,我可以摆脱括号和可选这个词吗?

@IBAction func TextFieldEditingDidChange(_ sender: Any) {
    let request = NSMutableURLRequest(url: NSURL(string: "usernamecheck.php")! as URL)
    request.httpMethod = "POST"
    print("Request: \(request)")
    let postString = "username=\(usernameTxt.text!)"
    request.httpBody = postString.data(using: String.Encoding.utf8)
    let task = URLSession.shared.dataTask(with: request as URLRequest) {
        data, response, error in
        if error != nil {
            print("error=\(error)")
            return
        } // Ends errror If statements
        print("response = \(response)")
        let responseString = NSString(data: data!, encoding:
            String.Encoding.utf8.rawValue)
        print("responseString = \(responseString)")   
    }   
    task.resume()   
}

部分 PHP 文件:

$a_sql = mysqli_query($con, "SELECT username FROM users WHERE username = '" . mysqli_real_escape_string($_POST['username']) . "' ; ");  
if (empty($_POST['username'])) {   
    $username_error = "Please input username";   
} else {   
    $a_sql;   
}
if ($a_sql && mysqli_num_rows($a_sql) > 0) {   
    $username_exists = "Username is already taken.";   
    echo $username_exists;   
} else {   
    echo "Fail";   
}

【问题讨论】:

  • 你为什么讨厌缩进?

标签: php ios swift


【解决方案1】:
guard let unwrappedMessage = originalMessage else { return } 

这是展开可选项的方法之一,但最终它取决于你想要做什么......

您真的应该阅读有关 Swift 中的选项的内容。非常非常简单,是初学者的话题,每个学习 Swift 的人都应该学习

【讨论】:

    【解决方案2】:
    guard let message = responseString else {
        return
    }
    print(message)
    

    实际上,您正在将可选的响应字符串解包到消息,现在如果它包含 nil,它不会给出任何异常,它会落入 else 情况。 另一方面,该值将存储在消息中,可以进一步使用

    【讨论】:

      【解决方案3】:

      如果让消息 = 消息 { 打印(消息) }

      【讨论】:

      • 不错。试着给出一些解释和你的答案。
      猜你喜欢
      • 1970-01-01
      • 2016-06-06
      • 1970-01-01
      • 2016-01-05
      • 2015-04-08
      • 2018-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多