Swift

Swift: วิธีแสดงชื่อของ Enum เป็น String

เรื่องที่เกี่ยวข้อง - iOS, Swift

ค่า Enum ในภาษาโปรแกรมนั้น ถูกนำมาใช้เป็นตัวแทนของข้อมูลที่มีจำนวนและประเภทชัดเจน เช่น

  • ขนาดเครื่องนุ่งห่ม: XS, S, M, L, XL, XXL
  • สถานะเปิดปิด: ON, OFF
  • สถานะสินค้าในคลัง: IN STOCK, SOLD OUT

ซึ่งเราสามารถเขียนโค้ดกำหนด enum ขึ้นมาได้เป็นแบบนี้

enum Size {
   case XS, S, M, L, XL, XXL
}

enum StockStatus {
   case IN_STOCK, SOLD_OUT
}

และเราเอามาอ้างอิงในการเปรียบเทียบ (Comparison) ในโค้ดโปรแกรม เพราะสะดวกสบายกว่าการใช้งานค่า String หรือ integer

if( product.stockStatus == StockStatus.IN_STOCK) {
}

ทีนี้โจทย์ของเราอาจจะมาถึงจุดที่ว่า ถ้าเราอยากเอาชื่อของค่าต่างๆ ใน enum มาแสดงเป็นข้อความ String จะทำยังไง

1. ประกาศ Enum เป็น String และใช้งานผ่าน rawValue

enum Size : String {
   case XS, S, M, L, XL, XXL
}

let selectedSize = Size.L.rawValue // "L"
  • สังเกตว่าเรากำหนดชนิดของข้อมูล (Data type) Size เป็น String
  • จากนั้นเราสามารถเรียกข้อมูลของ Enum ของเราผ่าน .rawValue ครับ

2. ใช้ String(describing:)

หรือใน Swift เวอร์ชั่นหลังๆ มาก็มีอีกวิธี นั่นคือใช้ String(describing:) นั่นเอง

enum Size : String {
   case XS, S, M, L, XL, XXL
}

let selectedSize = String(describing: Size.L) // "L"

จริงๆ มีอีกหลายวิธี แต่วิธีที่ซับซ้อนน้อยที่สุด และตรงกับความต้องการของพลจะเป็นแบบด้านบนครับ สนใจไปดูต่อได้ใน StackOverflow เลย

อ้างอิง – StackOverflow

เริ่มต้นยุค AI ด้วยคอร์สฟรี และพรีเมี่ยม กับพล

หากชอบสิ่งที่พลเล่า เรื่องที่พลสอน สามารถสนับสนุนพลโดยการเข้าเรียนคอร์สออนไลน์ของพลนะคร้าบ

  • เข้าใจง่าย ใช้ได้จริง ออกแบบการสอนอย่างเข้าใจโดยโค้ชพล
  • มีคอร์สสำหรับคนใช้งานทั่วไป จนถึงเรียนรู้เพื่อใช้งานในสายอาชีพขั้นสูง
  • ทุกคอร์สมีใบประกาศณียบัตรรับรองหลังเรียนจบ

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

Allow All
Manage Consent Preferences
  • Always Active

Save