2017-05-22 1 views
0

Ich arbeite gerade an einer Xcode-App, die es einem Benutzer ermöglicht, sich zu registrieren, indem er Daten an meine MySQL-Datenbank sendet. Ich habe nur ein paar Fragen.Schnelle Rückgabe des optionalen Werts

Die erste Frage, die ich habe, ist in den Zeilen 10, 13, 15. Ich habe eine Warnung an mich gesendet mit den Worten: "String-Interpolation erzeugt eine Debug-Beschreibung für einen optionalen Wert, wollten Sie dies explizit machen?" Kann ich meinen Code ändern, so dass der Wert nicht optional ist?

Der Antwort-String, der gesendet wird, lautet wie folgt: "responseString = Optional (Dieser Benutzername ist verfügbar)". Ich plante, die Antwortzeichenfolge zu verwenden, um Informationen zum Benutzer anzuzeigen. Gibt es trotzdem, dass ich die Klammern loswerden kann und auch das Wort 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() 
} 

Abschnitt PHP-Datei:

$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"; 
} 
+0

Warum hassen Sie Einrückung? – Alexander

Antwort

0
guard let message = responseString else { 
    return 
} 
print(message) 

Eigentlich eine optionale responsestring zur Mitteilung ist auszupacken, jetzt Wenn es null enthält, wird es keine Ausnahme geben und es wird in den Fall else fallen. Auf der anderen Seite wird der Wert in der Nachricht gespeichert und kann weiter verwendet werden

1
guard let unwrappedMessage = originalMessage else { return } 

Dies ist eine der Möglichkeiten ist optionals auszupacken, aber am Ende ist es abhängig von dem, was Sie tun wollen ...

Sie sollte wirklich über Optionals in Swift lesen. Es ist sehr, sehr einfach und ein Thema für Anfänger, dass jeder lernen Swift

0

lernen soll, wenn Message = Nachricht sei { print (Message) }

+0

Schön. Versuchen Sie, eine Erklärung zusammen mit Ihrer Antwort zu geben. –

Verwandte Themen