Advanced iOS Development
หลักสูตร Advanced iOS Development เป็นการอบรมการจัดการข้อมูลในแอป iOS ด้วย Swift และ SwiftUI ตั้งแต่ระบบไฟล์ใน Sandbox, UserDefaults, Keychain และแอปหลายภาษา ไปจนถึงฐานข้อมูล SQLite, SwiftData ขั้นสูง และการ Sync ข้อมูลผ่าน iCloud กับ CloudKit เหมาะกับนักพัฒนา iOS และนักศึกษาที่เขียนแอปด้วย SwiftUI ได้แล้ว
- ระยะเวลา18 ชั่วโมง · 3 วัน
- รูปแบบออนไซต์ / ออนไลน์สด
- รอบถัดไปเปิดตามคำขอ
- ใบรับรองมี Certificate
ภาพรวมหลักสูตร
เมื่อสร้างหน้าจอด้วย SwiftUI ได้แล้ว เรื่องที่แยกแอปทั่วไปออกจากแอปที่ใช้งานได้จริงคือการจัดการข้อมูล ทั้งการเก็บไฟล์ในตำแหน่งที่ถูกต้อง การเลือกระหว่าง UserDefaults, SQLite และ SwiftData การเปลี่ยนโครงสร้างข้อมูลโดยไม่ทำให้ข้อมูลเดิมของผู้ใช้เสีย และการทำให้ข้อมูลตามผู้ใช้ไปทุกอุปกรณ์ผ่าน iCloud
หลักสูตรนี้เป็นฉบับปรับปรุงใหม่สำหรับ Swift 6.4, Xcode 27 และ iOS 27 ต่อยอดจากหลักสูตร Basic iOS Development with Swift and SwiftUI เน้นการจัดการข้อมูลในแอป iOS ตั้งแต่ระบบไฟล์ใน Sandbox, Codable, UserDefaults, Keychain และ String Catalog ไปจนถึงฐานข้อมูล SQLite ผ่าน GRDB, SwiftData ขั้นสูงพร้อม Schema Migration, iCloud Key-Value, iCloud Drive และการ Sync SwiftData ผ่าน CloudKit แล้วแชร์ข้อมูลกับ Widget (อบรม 3 วัน วันละ 6 ชั่วโมง รวม 18 ชั่วโมง ระดับ Advanced)
สิ่งที่คุณจะได้รับ
- จัดการไฟล์ใน Sandbox และอ่านเขียนข้อมูลด้วย FileManager และ Codable ได้
- เก็บค่าตั้งค่าด้วย UserDefaults และ @AppStorage และเก็บข้อมูลลับด้วย Keychain ได้
- ทำแอปให้รองรับหลายภาษาด้วย String Catalog และแสดงวันที่ ตัวเลข และสกุลเงินด้วย FormatStyle ได้
- ใช้ฐานข้อมูล SQLite ในแอปที่เขียนด้วย Swift ผ่าน GRDB พร้อม Migration ได้
- ออกแบบ Model, Relationship และ Query ขั้นสูงใน SwiftData ได้
- เปลี่ยนโครงสร้างข้อมูลด้วย VersionedSchema และ SchemaMigrationPlan ได้
- เก็บและ Sync ข้อมูลของแอปผ่าน iCloud และ CloudKit ได้
- แชร์ข้อมูลระหว่างแอปกับ Widget ผ่าน App Groups ได้
หลักสูตรนี้เหมาะสำหรับ
- นักพัฒนา iOS ที่สร้างแอปด้วย SwiftUI ได้แล้วและต้องการจัดการข้อมูลอย่างจริงจัง
- นักศึกษาที่ผ่านพื้นฐาน iOS มาแล้วและอยากทำแอปที่ใช้งานได้จริง
- นักพัฒนาที่ต้องย้ายแอปเดิมจาก Core Data หรือ SQLite มาใช้ SwiftData
- ผู้สนใจทำแอปที่ Sync ข้อมูลข้าม iPhone, iPad และ Mac ผ่าน iCloud
พื้นฐานของผู้เข้าอบรม
- มีพื้นฐานการเขียนแอป iOS ด้วยภาษา Swift และ SwiftUI หรือผ่านหลักสูตร Basic iOS Development with Swift and SwiftUI มาแล้ว
- เข้าใจ struct, class, protocol และ async/await ใน Swift
- ใช้งานเครื่อง Mac (macOS) ได้ เนื่องจากการพัฒนาด้วย Xcode ต้องใช้เครื่อง Mac
- มีความรู้คำสั่ง SQL เบื้องต้นจะช่วยให้เรียนวันที่สองได้เร็วขึ้น แต่ไม่บังคับ
หัวข้อการฝึกอบรม
รายละเอียดหลักสูตร
หลักสูตรนี้เป็นฉบับปรับปรุงใหม่ปี 2026 ของหลักสูตร Advanced iOS Development เนื้อหาเขียนใหม่และอัปเดตให้ตรงกับ Swift 6.4, Xcode 27 และ iOS 27 อบรม 3 วัน วันละ 6 ชั่วโมง รวม 18 ชั่วโมง (09:00-16:00 น.) รูปแบบบรรยายสลับ Lab และ Workshop ระดับ Advanced ต่อยอดจากหลักสูตร Basic iOS Development with Swift and SwiftUI โดยเน้นการจัดการข้อมูลในแอป ตั้งแต่ระบบไฟล์ใน Sandbox, Codable, UserDefaults, Keychain และ String Catalog ไปจนถึง SQLite ผ่าน GRDB, SwiftData ขั้นสูงพร้อม Schema Migration, iCloud และการ Sync SwiftData ผ่าน CloudKit แล้วแชร์ข้อมูลกับ Widget ผ่าน App Groups ผู้เรียนจะได้ Lab Guide และซอร์สโค้ดครบทุก Lab กลับไปใช้งานต่อ
Day 1 ไฟล์ ค่าตั้งค่า และแอปหลายภาษา
Section 1: Lab: เตรียมโปรเจกต์และ Swift 6 Concurrency สำหรับงานข้อมูล
- ภาพรวมทางเลือกการเก็บข้อมูลใน iOS และเลือกใช้ให้เหมาะกับงาน
- สร้างโปรเจกต์ด้วย Xcode 27 และเปิด Strict Concurrency ของ Swift 6
- async/await, Task และ actor สำหรับงานอ่านเขียนข้อมูลที่ใช้เวลานาน
- @MainActor และการส่งข้อมูลกลับมาอัปเดตหน้าจออย่างปลอดภัย
Section 2: Lab: ระบบไฟล์ใน Sandbox
- โครงสร้าง Sandbox: Bundle, Documents, Application Support, Caches และ tmp
- อ่านรายชื่อไฟล์จาก Main Bundle ด้วย Bundle และ FileManager
- Copy ไฟล์จาก Main Bundle ไปยัง Documents เมื่อเปิดแอปครั้งแรก
- สร้าง ย้าย ลบ และตรวจขนาดไฟล์ด้วย FileManager และ URL
- เลือกตำแหน่งเก็บไฟล์ให้ถูกต้องเพื่อการสำรองข้อมูลและพื้นที่เครื่อง
Section 3: Lab: อ่านเขียนไฟล์ด้วย Codable และแชร์ไฟล์
- แปลงข้อมูลเป็น JSON และ Property List ด้วย Codable
- เขียนไฟล์แบบ Atomic และกำหนด File Protection
- นำเข้าและส่งออกไฟล์ด้วย fileImporter และ fileExporter ใน SwiftUI
- แชร์ไฟล์ให้แอปอื่นด้วย ShareLink
- Lab: แอปบันทึกรายการที่เก็บข้อมูลเป็นไฟล์ JSON
Section 4: Lab: UserDefaults, @AppStorage และ Keychain
- เก็บค่าตั้งค่าของผู้ใช้ด้วย UserDefaults
- ผูกค่าตั้งค่ากับหน้าจอด้วย @AppStorage ใน SwiftUI
- ข้อมูลแบบไหนไม่ควรเก็บใน UserDefaults
- เก็บ Token และรหัสผ่านด้วย Keychain ผ่าน Security Framework
- Lab: หน้าตั้งค่าแอปพร้อมระบบจำการเข้าสู่ระบบ
Section 5: Lab: แอปหลายภาษาด้วย String Catalog และ FormatStyle
- แนวคิด Internationalization และ Localization
- แปลข้อความด้วย String Catalog และ String(localized:) พร้อมรูปพหูพจน์
- แสดงวันที่ด้วย Date.FormatStyle รวมถึงปฏิทินพุทธศักราช
- แสดงตัวเลขและสกุลเงินด้วย FormatStyle
- ทดสอบภาษาและภูมิภาคต่าง ๆ ด้วย Scheme ของ Xcode
Day 2 SQLite และ SwiftData ขั้นสูง
Section 6: Lab: พื้นฐาน SQLite และคำสั่ง SQL
- SQLite คืออะไร และเหมาะกับงานแบบไหนในแอปมือถือ
- สร้างไฟล์ฐานข้อมูลด้วย DB Browser for SQLite และ sqlite3
- SQLite Expressions และการเลือกข้อมูลด้วย SELECT, WHERE และ ORDER BY
- เพิ่ม แก้ไข และลบข้อมูลด้วย INSERT, UPDATE และ DELETE
- JOIN และ Index สำหรับข้อมูลที่มีหลายตาราง
Section 7: Lab: ใช้ SQLite ในแอปด้วย GRDB
- เพิ่ม GRDB.swift ด้วย Swift Package Manager
- นำไฟล์ SQLite ที่เตรียมไว้มาใส่แอปและเปิดใช้งานจาก Application Support
- เปิดฐานข้อมูลด้วย DatabaseQueue และ DatabasePool
- สร้าง Record Type ด้วย Codable, FetchableRecord และ PersistableRecord
- Lab: แสดงและค้นหาข้อมูลจาก SQLite ในหน้าจอ SwiftUI
Section 8: Lab: Migration และ Observation ด้วย GRDB
- อัปเดตเวอร์ชันฐานข้อมูลด้วย DatabaseMigrator
- ตรวจว่าฐานข้อมูลเก่าหรือใหม่กว่าแอปก่อนเปิดใช้งาน
- ติดตามการเปลี่ยนแปลงข้อมูลด้วย ValueObservation แล้วอัปเดตหน้าจอ
- ทำงานกับฐานข้อมูลนอก Main Thread อย่างปลอดภัย
Section 9: Lab: Model และ Relationship ใน SwiftData
- SwiftData คืออะไร และสัมพันธ์กับ Core Data อย่างไร
- สร้าง Model ด้วย @Model และกำหนด @Attribute
- กำหนด Relationship แบบหนึ่งต่อหลายพร้อม Delete Rule
- กำหนดค่าไม่ซ้ำด้วย #Unique และตั้งค่า ModelContainer กับ ModelContext
- บันทึก แก้ไข และลบข้อมูลพร้อม Undo
Section 10: Lab: Query ขั้นสูงใน SwiftData
- ดึงข้อมูลด้วย @Query และ FetchDescriptor
- กำหนดเงื่อนไขด้วย #Predicate และสร้าง Query ตามคำค้นของผู้ใช้
- เรียงลำดับด้วย SortDescriptor และแบ่งหน้าด้วย fetchLimit กับ fetchOffset
- นับจำนวนและรวมข้อมูลโดยไม่ต้องโหลดทุกรายการ
- ทำงานเบื้องหลังด้วย ModelActor เช่น นำเข้าข้อมูลจำนวนมาก
Day 3 Migration, iCloud และ Widget
Section 11: Lab: Schema Migration ใน SwiftData
- ทำไมต้องวางแผน Migration ก่อนส่งแอปเวอร์ชันใหม่
- กำหนดเวอร์ชันของ Schema ด้วย VersionedSchema
- เขียน SchemaMigrationPlan แบบ Lightweight และแบบ Custom
- ทดสอบ Migration กับข้อมูลของแอปเวอร์ชันก่อน
Section 12: Lab: iCloud Key-Value และ iCloud Drive
- แนวคิดและหลักการของ iCloud และ CloudKit
- เปิด Capability ของ iCloud และกำหนด iCloud Container
- เก็บค่าตั้งค่าข้ามอุปกรณ์ด้วย NSUbiquitousKeyValueStore
- เก็บไฟล์เอกสารบน iCloud Drive ผ่าน Ubiquity Container
- ค้นหาไฟล์บน iCloud ด้วย NSMetadataQuery
Section 13: Lab: Sync SwiftData ผ่าน CloudKit
- เปิด iCloud กับ CloudKit และ Background Modes สำหรับ Remote Notifications
- ข้อกำหนดของ Model ที่จะ Sync เช่น ค่าเริ่มต้น Relationship และ Unique Constraint
- ตั้งค่า ModelConfiguration และเลือกเปิดหรือปิดการ Sync
- ตรวจข้อมูลและ Schema ใน CloudKit Console
- ทดสอบ Sync ระหว่างสองอุปกรณ์และ Debug ปัญหาที่พบบ่อย
Section 14: Lab: แชร์ข้อมูลกับ Widget ผ่าน App Groups
- เปิด App Groups และย้าย Store ของ SwiftData ไปไว้ใน Group Container
- สร้าง Widget Extension และ Timeline Provider ด้วย WidgetKit
- อ่านข้อมูลจาก SwiftData มาแสดงใน Widget
- สั่งให้ Widget อัปเดตเมื่อข้อมูลในแอปเปลี่ยน
Section 15: Workshop: แอปบันทึกข้อมูลที่ Sync ข้ามอุปกรณ์
- ออกแบบ Model และเลือกที่เก็บข้อมูลให้เหมาะกับแต่ละส่วนของแอป
- เก็บข้อมูลด้วย SwiftData และ Sync ผ่าน CloudKit
- แนบไฟล์เอกสาร รองรับสองภาษา และแสดงสรุปบน Widget
- นำเสนอผลงาน รีวิวร่วมกัน และแนวทางเตรียมขึ้น App Store
รอบอบรมและรูปแบบการอบรม
สำหรับบุคคล — รอบอบรมทั่วไป
ขณะนี้ยังไม่มีรอบอบรมเปิดรับสมัคร ลงชื่อจองไว้ได้เลย ทีมงานจะติดต่อกลับเป็นกลุ่มแรกเมื่อเปิดรอบถัดไป หรือสอบถามทางไลน์ หรือโทร 02-570-8449 หรือ 088-807-9770
สำหรับองค์กร — In-house / Private Training
- ปรับเนื้อหาให้ตรงกับเครื่องมือและงานจริงของทีม
- เลือกวันเอง อบรมที่บริษัทหรือออนไลน์สด
- ออกใบเสนอราคาในนามนิติบุคคลให้ฝ่ายจัดซื้อ
วิทยากรผู้สอน
คำถามที่พบบ่อย
SwiftData คืออะไร ใช้เก็บข้อมูลในแอป iOS อย่างไร
SwiftData เป็น Framework ของ Apple สำหรับเก็บข้อมูลแบบมีโครงสร้าง ทำงานบนเทคโนโลยีเดียวกับ Core Data แต่เขียนด้วยโค้ด Swift ล้วน ประกาศ Class ด้วย @Model แล้วตั้งค่า ModelContainer ให้แอป ใช้ ModelContext เพิ่ม แก้ไข และลบข้อมูล และดึงข้อมูลมาแสดงด้วย @Query ใน SwiftUI โดยกรองด้วย #Predicate และเรียงด้วย SortDescriptor เมื่อต้องเปลี่ยนโครงสร้างข้อมูลในเวอร์ชันถัดไปใช้ VersionedSchema และ SchemaMigrationPlan และสามารถ Sync ข้อมูลข้ามอุปกรณ์ผ่าน CloudKit ได้
UserDefaults กับ @AppStorage ต่างกันอย่างไร
UserDefaults เป็นที่เก็บค่าตั้งค่าขนาดเล็กแบบ Key-Value ของแอป เช่น ธีม ภาษา หรือค่าที่ผู้ใช้เลือกไว้ ส่วน @AppStorage เป็น Property Wrapper ของ SwiftUI ที่อ่านเขียนค่าเดียวกันใน UserDefaults และทำให้หน้าจออัปเดตเองเมื่อค่าเปลี่ยน ทั้งสองแบบไม่เหมาะกับข้อมูลจำนวนมากหรือข้อมูลลับ ข้อมูลอย่าง Token หรือรหัสผ่านควรเก็บใน Keychain และข้อมูลจำนวนมากควรใช้ SwiftData หรือ SQLite
ทำแอปให้รองรับหลายภาษาด้วย String Catalog มีขั้นตอนอย่างไร
เพิ่มไฟล์ String Catalog เข้าโปรเจกต์และเพิ่มภาษาที่ต้องการในการตั้งค่าโปรเจกต์ เมื่อ Build แอป Xcode จะรวบรวมข้อความจาก SwiftUI และ String(localized:) มาไว้ในไฟล์ให้อัตโนมัติ จากนั้นใส่คำแปลของแต่ละภาษา กำหนดรูปพหูพจน์ได้ในไฟล์เดียวกัน ส่วนวันที่ ตัวเลข และสกุลเงินให้ใช้ FormatStyle ซึ่งแสดงผลตามภาษาและภูมิภาคของผู้ใช้ แล้วทดสอบด้วยการตั้งภาษาใน Scheme ของ Xcode
หลักสูตร Advanced iOS Development เหมาะกับใคร ต้องมีพื้นฐานอะไรมาก่อน
เหมาะกับนักพัฒนา iOS นักศึกษา และผู้ที่ต้องการทำแอปที่จัดการข้อมูลได้จริงหรือ Sync ข้ามอุปกรณ์ ควรเขียนแอปด้วย Swift และ SwiftUI ได้แล้ว หรือผ่านหลักสูตร Basic iOS Development with Swift and SwiftUI มาก่อน เข้าใจ struct, class, protocol และ async/await และใช้เครื่อง Mac ได้ ความรู้ SQL เบื้องต้นจะช่วยได้แต่ไม่บังคับ
เรียนจบหลักสูตร Advanced iOS Development แล้วทำอะไรได้บ้าง
จัดการไฟล์ใน Sandbox ด้วย FileManager และ Codable เก็บค่าตั้งค่าด้วย @AppStorage และข้อมูลลับด้วย Keychain ทำแอปหลายภาษาด้วย String Catalog ใช้ SQLite ผ่าน GRDB พร้อม Migration ออกแบบและ Query ข้อมูลด้วย SwiftData ขั้นสูง เปลี่ยนโครงสร้างข้อมูลอย่างปลอดภัย Sync ข้อมูลผ่าน iCloud และ CloudKit และแชร์ข้อมูลกับ Widget ผู้ผ่านการอบรมได้รับใบประกาศนียบัตร (Certificate of Completion) ที่มีเลขที่ของตัวเองและตรวจสอบออนไลน์ได้
เรียน Advanced iOS Development ต้องเตรียมอะไรบ้าง
ต้องนำเครื่อง Mac ที่ใช้ macOS Tahoe 26.6 ขึ้นไปและติดตั้ง Xcode 27 ได้มาเอง แนะนำให้มี iPhone หรือ iPad สำหรับทดสอบ และ Apple Account สำหรับรันแอปบนเครื่องจริง ส่วนการเปิดใช้ iCloud, CloudKit และ App Groups ต้องมีบัญชี Apple Developer Program ของผู้เรียน หากยังไม่มี ผู้เรียนทำ Lab ส่วนอื่นได้ครบและดูการสาธิตส่วน iCloud จากวิทยากร

