[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

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/

Facebook Comment

Popular post of 7 days

[Android] เปิดเครื่องไม่ได้ โลโก้ค้าง (Boot Loop)

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

ลืมรหัสปลดล็อค Android เข้าเครื่องไม่ได้ มีทางออกครับ