[iOS] ใช้ฐานข้อมูล Core Data ด้วย Swift
นี่อาจจะเป็น post แรกเรื่องเกี่ยวกับ iOS native บอกตรงๆเลยว่า ผมเป็น Android Developer ที่ไม่ชอบ iOS แต่ถึงกระนั้นเราก็ต้องทำต่อไปอยู่ดี มองในแง่ดีเราก็จะได้รับมุมมองที่แตกต่างบ้างล่ะนะ
SQLite เป็นรูปแบบฐานข้อมูลที่นิยมสูง แม้ว่าปัจจุบัน application ส่วนใหญ่จะ online ใช้ฐานข้อมูลจาก server แต่เราก็ต้องทำเพื่อพิสูจน์ว่า "มันทำได้"
Core Data ชื่อที่ xcode ตั้งไว้สำหรับการใช้งาน SQLite ซึ่งต้องยอมรับว่าจุดนี้เค้าแข็งกว่า Android พอสมควร เราจะมาเริ่มจาก Design กันก่อน
1. File -> New -> File... เลือก Data Model
ไฟล์ที่เกี่ยวข้องทั้งหมดของ Core Data ครับ
สังเกตว่า หลังจากเราออกแบบฐานข้อมูลเพื่อรองรับการใช้งานเป็นที่เรียบร้อยแล้ว เราต้องสร้างไฟล์ class บางอย่างเพื่อเชื่อมต่อไปยังฐานข้อมูลนั้นๆด้วย ลักษณะนี้คือการทำงานของ Object-relational Mapping เพื่อเชื่อมโยงฐานข้อมูลกับ class นั่นเอง
เมื่อฐานข้อมูลพร้อมแล้ว เราก็เริ่ม coding กัน
การ insert
การ delete
การ retrieve
อย่าลืม commit มิฉะนั้น Data จะไม่เปลี่ยนจริงๆ นะแจ๊ะ
ref:
https://blog.revivalx.com/2015/06/23/swift-ios-tutorial-core-data-add-update-delete/
SQLite เป็นรูปแบบฐานข้อมูลที่นิยมสูง แม้ว่าปัจจุบัน application ส่วนใหญ่จะ online ใช้ฐานข้อมูลจาก server แต่เราก็ต้องทำเพื่อพิสูจน์ว่า "มันทำได้"
Core Data ชื่อที่ xcode ตั้งไว้สำหรับการใช้งาน SQLite ซึ่งต้องยอมรับว่าจุดนี้เค้าแข็งกว่า Android พอสมควร เราจะมาเริ่มจาก Design กันก่อน
1. File -> New -> File... เลือก Data Model
2. ทำการออกแบบ ซึ่ง Xcode มีหน้าจอสวยงามให้ใช้งาน (ไม่อธิบายแล้วกันเนอะ)
3. Editor -> Create NSManagedObject Subclass หรือจะเลือก New ที่ภาพแรกก็ได้ เสร็จแล้วก็สร้างออกมาให้เป็น *.swift file
ไฟล์ที่เกี่ยวข้องทั้งหมดของ Core Data ครับ
สังเกตว่า หลังจากเราออกแบบฐานข้อมูลเพื่อรองรับการใช้งานเป็นที่เรียบร้อยแล้ว เราต้องสร้างไฟล์ class บางอย่างเพื่อเชื่อมต่อไปยังฐานข้อมูลนั้นๆด้วย ลักษณะนี้คือการทำงานของ Object-relational Mapping เพื่อเชื่อมโยงฐานข้อมูลกับ class นั่นเอง
เมื่อฐานข้อมูลพร้อมแล้ว เราก็เริ่ม coding กัน
การ insert
let newItem = NSEntityDescription.insertNewObjectForEntityForName(ENTITY_NAME, inManagedObjectContext: self.managedObjectContext!) as! Persons newItem.name = "Lord Gift" newItem.nickname = "😎"
การ delete
managedObjectContext?.deleteObject(fetchResult)
การ retrieve
let fetchRequest = NSFetchRequest(entityName: ENTITY_NAME) if let fetchResults = (try? managedObjectContext!.executeFetchRequest(fetchRequest)) as? [Persons] { var texts = "" for fetchResult in fetchResults { texts = texts + fetchResult.nickname! } textView.text = texts }
อย่าลืม commit มิฉะนั้น Data จะไม่เปลี่ยนจริงๆ นะแจ๊ะ
managedObjectContext?.save()
ref:
https://blog.revivalx.com/2015/06/23/swift-ios-tutorial-core-data-add-update-delete/