พอดีนั่งดู Vdo WWDC 16 Getting Started with Swift ในช่วงที่ Apple พูดถึง Generic Types เขาเลยยกตัวอย่าง การใช้งาน Struct + Generic Types ไปใช้จัดการข้อมูลที่จะเอามาโชวบน UITableView เลยเกิดแรงบรรดาลใจในการเขียน Blog นี้ขึ้น
หลังจากได้ยิน Apple แนะนำให้ใช้ Struct กับ UITableView ก็เลยไปลองหาใน StackOverFlow ดูว่า เขาใช้อะไรกัน ในสมัยก่อน ก็ไปเจอ Topic นึง
objective c – What would be a good data structure for UITableView
ซึ่ง สมัยก่อน เราอาจจะทำ คล้ายๆแบบนี้
ซึ่งมันก็โอเคในระดับนึง แต่อาจจะอ่าน ยากไปสักนิดนึง
เราลองมาดู ตัวอย่าง Struct + Generic Types ดู
เริ่มต้นจาก Struct ที่ Apple ยกตัวอย่าง โดย name เราจะเอาไปใช้สำหรับ Section Header และ items จะเป็นข้อมูลของแต่ละ Row
ใน ViewController ของเรา ก็ลองสร้าง Struct แล้วเก็บไว้ใน Array Data
เรา จะแยก UITableViewDataSource ออกมาอีก extension นึง เพื่อแบ่งแยก Code ให้อ่านง่าย สามารถอ่าน Code Style Guide
ซึ่งใน DataSource เราสามารถ เรียกใช้ข้อมูลได้จาก Struct ที่เราสร้างขึ้นได้อย่างง่าย และ มันทำให้ Code เราอ่านง่ายขึ้น ถ้าเราต้องการความสามารถที่มากขึ้น เราสามารถสร้าง Enum เพื่อมาแบ่ง Section Type ได้
เราก็จะได้ UITableView ที่มี Section Header และ Row ที่จัดการข้อมูลด้วย Struct ทำให้เราน่าจะจัดการ Code และทำให้มันอ่านมันง่ายขึ้น
สำหรับใครที่อยากอ่านมากขึ้นสำหรับเขียน Code โครงสร้างคล้ายๆแบบนี้ สามารถดูอีกตัวอย่างเพิ่มเติมได้ที่นี้