[Swift] UITextField hat mir den Unterschied zwischen Null und "" beigebracht.

Neulich habe ich den Unterschied zwischen Null und "" (aus dem Brief) gesehen, also werde ich ihn aufzeichnen.

Was ist passiert

UITextField (textField) zum Eingeben einer Nachricht und eine Schaltfläche ( sendButton) zum Senden Wurde implementiert. スクリーンショット 2020-11-03 18.56.09.png

Hier ist es bedeutungslos, wenn das textField keinen Wert hat, daher habe ich darüber nachgedacht, die Senden-Schaltfläche so einzustellen, dass sie nur verwendet werden kann, wenn das textField einen Wert hat. Die Implementierung ist wie folgt


    @objc func textFieldDidChange(sender: UITextField) {
        if textField.text == nil {//Achten Sie auf diese Zeile
            sendButton.isEnabled = false
        } else {
            sendButton.isEnabled = true
        }
    }

textFieldDidChange () ist eine Methode, die jedes Mal aufgerufen wird, wenn sich der Wert von textField ändert. Lassen Sie uns das Ausführungsergebnis überprüfen.

Ausgangszustand

スクリーンショット 2020-11-03 19.08.09.png

Natürlich können Sie die Senden-Schaltfläche nicht drücken, da "textField" keinen Wert enthält.

Geben Sie Zeichen ein

スクリーンショット 2020-11-03 18.56.09.png

Zeichen werden eingegeben und die Senden-Taste kann gedrückt werden.

Zeichen löschen

スクリーンショット 2020-11-03 19.19.49.png

Die Sendetaste kann gedrückt werden, obwohl keine Zeichen vorhanden sind.

: Stirnrunzeln2: Nande? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? : Stirnrunzeln2:

Problemumgehung

Bei den oben genannten Ereignissen wurde festgestellt, dass ** wenn Sie ein Zeichen einmal eingeben und dann löschen, es nicht Null ist **. Ich änderte den bedingten Ausdruck und dachte: "Warum wurde er überhaupt als" textField.text == nil "geschrieben?"

    @objc func textFieldDidChange(sender: UITextField) {
        if commentTextField.text == ""{//Achten Sie auf diese Zeile
            sendButton.isEnabled = false
        } else {
            sendButton.isEnabled = true
        }
    }

Dieses Mal habe ich "" (vom Zeichen) im bedingten Ausdruck in "Null" geändert und eingefügt. Überprüfen Sie das Ausführungsergebnis.

Löschen nach Eingabe von Zeichen

スクリーンショット 2020-11-03 19.39.46.png

Es ist schwierig, es nur mit dem Bild zu vermitteln, aber ich konnte den normalen Betrieb bestätigen.

Zusammenfassung

In Bezug auf UITextField entspricht die Behandlung von bedingten Ausdrücken und Elementen wie folgt.

== nil == ""
Ausgangszustand true true
Geben Sie Zeichen ein false false
Löschen Sie die eingegebenen Zeichen false true

Nach dieser Erfahrung

Dieses Ereignis gab mir ein wenig besseres Verständnis für den Unterschied zwischen Null und "". Bis jetzt wurde mir in Büchern oft gesagt, dass "Null und" "unterschiedlich sind !!", und ich erinnerte mich an mich selbst, aber dies war das erste Mal, dass ich es bei der Implementierung miterlebte.

Erkennung der aktuellen Null und ""

nil Völlig unschuldig ohne Wert! Wahnsinnig rein! !! Natürliches Wasser Super schön

"" (Zeichen von)

Ein Bild, das wie "ein Zustand ohne Wert" aussieht und künstlich "einen Zustand ohne Wert" reproduziert. Das Gefühl, dass Abwasser gefiltert und in die Natur gebracht wird Ein bisschen dreckig


Wenn Sie Probleme mit dieser Erkennung haben, werde ich sie erneut schreiben.

Recommended Posts

[Swift] UITextField hat mir den Unterschied zwischen Null und "" beigebracht.
Über den Unterschied zwischen irb und pry
[Java] Verstehe den Unterschied zwischen List und Set
[Rails / Active Record] Über den Unterschied zwischen create und create!
Verstehe den Unterschied zwischen abstrakten Klassen und Schnittstellen!
Was ist der Unterschied zwischen SimpleDateFormat und DateTimeFormatter? ??
Unterschied zwischen vh und%
Unterschied zwischen i ++ und ++ i
[Ruby] Ich habe über den Unterschied zwischen each_with_index und each.with_index nachgedacht
[Rails] Ich habe den Unterschied zwischen Ressourcen und Ressourcen untersucht
Was ist der Unterschied zwischen Systemspezifikation und Funktionsspezifikation?
Unterschiede zwischen Klassen und Instanzen in Ruby
[Rails] Was ist der Unterschied zwischen Redirect und Rendering?
Vergleichen Sie den Unterschied zwischen Docker-Datei vor und nach Docker-Slim
Was ist der Unterschied zwischen Überspringen und Ausstehend? [RSpec]
[Java] Unterschied zwischen == und gleich
Unterschied zwischen CUI und GUI
Unterschied zwischen Variablen und Instanzvariablen
Unterschied zwischen Mockito-Core und Mockito-All
Unterschied zwischen Bundle und Bundle-Installation
Unterschied zwischen render und redirect_to
Unterschied zwischen List und ArrayList
Unterschied zwischen .bashrc und .bash_profile
Unterschied zwischen StringBuilder und StringBuffer
Unterschied zwischen render und redirect_to
[Rails] Was ist der Unterschied zwischen Bundle-Installation und Bundle-Update?
Unterschied zwischen Java und JavaScript (wie man den Durchschnitt findet)
Was ist der Unterschied zwischen einer Aktion und einer Instanzmethode?
[Java] Überprüfen Sie den Unterschied zwischen orElse und orElseGet mit IntStream
Überschreiben wir den Unterschied zwischen == (Identität) und der Methode equals (Äquivalenz).
Der Unterschied zwischen der Programmierung mit Ruby-Klassen und der Programmierung ohne Ruby-Klassen
[Ruby] Unterschied zwischen get und post
Unterschied zwischen Instanzmethode und Klassenmethode
Finden Sie den Unterschied zwischen Listentypen
Unterschied zwischen == Operator und Methode gleich
[Java] Unterschied zwischen Hashmap und HashTable
Unterschiede zwischen get und gets.chomp (außer Zeilenumbrüchen)
[Terminal] Unterschied zwischen irb und pry
JavaServlet: Unterschied zwischen executeQuery und executeUpdate
[Ruby] Unterschied zwischen is_a? Und instance_of?
Unterschied zwischen dem Operator == und der Methode eqals
Grober Unterschied zwischen RSpec und Minitest
[Rails] Unterschied zwischen find und find_by
Unterschied zwischen Instanzvariable und Klassenvariable
[JAVA] Unterschied zwischen Abstract und Interface
Unterschied zwischen Thymeleaf @RestController und @Controller
Unterschied zwischen Stream Map und FlatMap
[Java] Unterschied zwischen Array und ArrayList
Unterschied zwischen primitivem Typ und Referenztyp
[Java] Was ist der Unterschied zwischen Form, Entität und dto? [Bohne]
Unterschied zwischen string.getByte () und Hex.decodeHex (string.toCharaArray ())