ฉันกำลังฝึกการเขียนโปรแกรมที่รวดเร็วโดยการสร้างแอปที่เก็บข้อมูลของลูกค้า แอปมีช่องข้อความหลายช่องให้ผู้ใช้พิมพ์ชื่อ ที่อยู่อีเมล หมายเลขโทรศัพท์ และจำนวนสินค้าที่ซื้อ จากนั้นด้วยปุ่ม 'ส่ง' พวกเขาจะบันทึกข้อมูลนั้นลงในฐานข้อมูล อย่างไรก็ตาม หากช่องใดช่องหนึ่งว่างเปล่า ก็ควรเกิดข้อผิดพลาดและข้อความควรปรากฏแก่ผู้ใช้เพื่อแจ้งให้ผู้ใช้ทราบว่าช่องใดช่องหนึ่งว่างเปล่า
ปัญหาคือแม้ว่าฟิลด์ข้อความจะว่างเปล่า แต่คอมไพเลอร์กลับอ่านค่าเป็นศูนย์ไม่ได้ ดังนั้นสภาพของฉันจึงไม่ทำงาน
เพื่อความง่าย ฉันละเว้นโค้ดจำนวนมาก ฉันจะทำงานกับ UITextField เดียวเท่านั้น (ชื่อลูกค้า) และเงื่อนไขของฉันจะตรวจสอบว่า TextField ว่างเปล่าหรือไม่ หากว่างเปล่า ควรพิมพ์ว่า "กรุณากรอกชื่อที่ถูกต้อง" หากไม่ใช่ศูนย์ก็ควรพิมพ์ชื่อลูกค้า
class RaffleViewControler: UIViewController, UITextFieldDelegate {
@IBOutlet weak var customerNameTextField: UITextField!
@IBAction func addCustomerName(_ sender: UITextField) {
}
@IBOutlet weak var submitButton: UIButton!
@IBAction func submitCustomer(_ sender: UIButton) {
if let name = customerNameTextField.text {
print(name)
} else {
print("Please enter a valid name")
}
}
หรืออีกวิธีหนึ่ง ฉันกำลังตรวจสอบสภาพของตัวเองในรูปแบบต่อไปนี้:
@IBAction func submitCustomer(_ sender: UIButton) {
if customerNameTextField.text != nil {
print("Congrats. Your data is in our database")
} else {
print("Please enter a valid name")
}
}
ปัญหา:
แม้ว่าฉันจะปล่อยฟิลด์ข้อความว่างไว้ คอมไพเลอร์จะไม่อ่านส่วน "else" ของเงื่อนไข ซึ่งดูเหมือนว่าจะบ่งบอกว่าสนามไม่เคยเป็นศูนย์ อะไรจะเกิดขึ้น?
if customerNameTextField.hasText {
. อีกทางเลือกหนึ่งคือทดสอบว่าไม่ว่างเปล่าหรือไม่โดยตรวจสอบคุณสมบัติข้อความif customerNameTextField.text?.isEmpty == false {
- person Leo Dabus   schedule 10.11.2017