- การทำความเข้าใจตัวเลือก (Optionals) และการแกะ (Unwrapping)
- การผูกมัดเพิ่มเติม (Optional Chaining) และการรวมตัวกันของ Nil (Nil Coalescing)
- โมเดลการจัดการข้อผิดพลาด (Error Handling Model)
- จัดการข้อผิดพลาดใน Throwing, Catching และ Propagating
ในการรับทำแอพ iOS Swift คุณจะพบกับสถานการณ์ที่คุณจัดการกับข้อมูลที่ไม่แน่นอนหรือไม่สมบูรณ์ คุณลักษณะด้านความปลอดภัยประเภทต่างๆ ของการทำแอพ iOS Swift ช่วยให้คุณหลีกเลี่ยงข้อผิดพลาดทั่วไปโดยการจัดหาเครื่องมือที่มีประสิทธิภาพ เช่น ตัวเลือกและการจัดการข้อผิดพลาด บทความนี้จะแนะนำคุณตลอดการทำความเข้าใจเกี่ยวกับทางเลือก (Optionals) การแกะ (Unwrapping) การโยงทางเลือก (optional chaining) การรวมตัวกันของ Nil (Nil Coalescing) และการจัดการข้อผิดพลาดใน Swift
1. การทำความเข้าใจตัวเลือก (Optionals) และการแกะ (Unwrapping)
ทางเลือกคือวิธีการแสดงถึงการไม่มีค่าใน iOS Swift พวกเขาสามารถถือเป็นสิ่งห่อหุ้มรอบค่าที่อาจจะมีหรือไม่มีก็ได้ ซึ่งหมายความว่าตัวเลือกสามารถเก็บค่าหรือ nil ได้
1.1 ประกาศตัวเลือก (Declaring optionals)
หากต้องการประกาศทางเลือก ให้ใส่เครื่องหมายคำถาม?ต่อท้ายประเภท:
var name: String? // name is an optional String that is currently nil
1.2 การกำหนดค่าให้กับตัวเลือก
คุณสามารถกำหนดค่าให้กับทางเลือกได้เช่นเดียวกับตัวแปรอื่นๆ:
name = "John Doe" // name now holds the value "John Doe"
1.3 แกะตัวเลือก (Unwrapping optionals)
หากต้องการใช้ค่าที่จัดเก็บไว้ในตัวเลือก คุณต้องแกะมันออก สิ่งนี้ทำได้โดยการตรวจสอบว่าตัวเลือกนั้นมีค่าหรือไม่ จากนั้นจึงเข้าถึงได้อย่างปลอดภัย
มีสองวิธีทั่วไปในการแกะตัวเลือก:
1. ใช้ if let ไวยากรณ์:
if let unwrappedName = name {
print("Hello, \(unwrappedName)!")
} else {
print("No name provided.")
}
2. ใช้ guard let ไวยากรณ์:
func greet() {
guard let unwrappedName = name else {
print("No name provided.")
return
}
print("Hello, \(unwrappedName)!")
}
2. การผูกมัดเพิ่มเติม (Optional Chaining) และการรวมตัวกันของ Nil (Nil Coalescing)
2.1 การผูกมัดเพิ่มเติม (Optional Chaining)
การโยงทางเลือกเป็นวิธีที่รัดกุมในการเข้าถึงคุณสมบัติหรือเมธอดบนทางเลือกที่อาจจะ nil เป็น แทนที่จะใช้คำสั่งที่ซ้อนกันหลายรายการ if let คุณ guard let สามารถใช้การโยงทางเลือกกับ ?. ตัวดำเนินการ:
class Person {
var pet: Pet?
}
class Pet {
var name: String
init(name: String) {
self.name = name
}
}
let person = Person()
person.pet = Pet(name: "Buddy")
let petName = person.pet?.name // petName is an optional String containing "Buddy"
2.2 การรวมตัวกันของ Nil (Nil Coalescing)
การรวมตัวกันของ Nil เป็นวิธีการให้ค่าเริ่มต้นเมื่อตัวเลือก nil
คือ ตัวดำเนินการการรวมตัวกัน ??
เป็นศูนย์ใช้เพื่อบรรลุสิ่งนี้:
let defaultName = "Anonymous"
let displayName = name ?? defaultName // If name is nil, displayName will be "Anonymous"
3. โมเดลการจัดการข้อผิดพลาด (Error Handling Model)
Swift มีรูปแบบการจัดการข้อผิดพลาดที่มีประสิทธิภาพซึ่งช่วยให้คุณสามารถตรวจจับ จัดการ และเผยแพร่ข้อผิดพลาดได้อย่างสง่างาม ข้อผิดพลาดจะแสดงตามประเภทที่สอดคล้องกับ Error โปรโตคอล:
enum ValidationError: Error {
case invalidEmail
case passwordTooShort
}
4. จัดการข้อผิดพลาดใน Throwing, Catching และ Propagating
4.1 Throwing errors
ในการระบุว่าฟังก์ชันสามารถส่งข้อผิดพลาดได้ ให้รวม throws
คีย์เวิร์ดไว้ในลายเซ็นของฟังก์ชัน:
func validate(email: String, password: String) throws {
// Validation logic
}
4.2 Catching errors
ในการจัดการกับข้อผิดพลาดที่เกิดขึ้น คุณใช้ do-catch
บล็อก:
do {
try validate(email: "john.doe@example.com", password: "short")
} catch ValidationError.invalidEmail {
print("Invalid email address.")
} catch ValidationError.passwordTooShort {
print("Password is too short.")
} catch {
print("An unexpected error occurred: \(error)")
}
4.3 Propagating errors
หากคุณต้องการเผยแพร่ข้อผิดพลาด (Propagating errors) ไปยังฟังก์ชันที่เรียกใช้ คุณสามารถใช้คีย์เวิร์ด throws
ในลายเซ็น (signature) ของฟังก์ชันและคีย์เวิร์ด try
เมื่อเรียกใช้ฟังก์ชัน Throw:
func signUp(email: String, password: String) throws {
try validate(email: email, password: password)
// Sign up logic
}
do {
try signUp(email: "john.doe@example.com", password: "short")
} catch {
print("An error occurred: \(error)")
}
การทำความเข้าใจเกี่ยวกับตัวเลือกเพิ่มเติม การโยงทางเลือก และการจัดการข้อผิดพลาดเป็นสิ่งสำคัญเมื่อทำงานกับ iOS Swift เครื่องมือเหล่านี้ช่วยให้คุณทำแอพที่ปลอดภัยและสะอาดขึ้น ซึ่งจัดการกับความไม่แน่นอนและข้อผิดพลาดได้อย่างสง่างาม คุณจะพร้อมรับมือกับความท้าทายในการทำแอพ iOS Swift ได้เมื่อเชี่ยวชาญแนวคิดเหล่านี้