วันศุกร์ที่ 21 ธันวาคม พ.ศ. 2555

Xcode Programming XV : Core Data ( Part II )

หลังจากที่เราได้ออกแบบฐานข้อมูลเสร็จเรียบร้อยแล้ว ลองมาใช้งานกันดูนะครับ


  • New File >> Core Data >> NSManagedObject subclass >> Next >> Create


จะเห็นว่าทุก Entity ใน DataModel จะถูกสร้างเป็น File ขึ้นมาให้เรียกใช้งานแบบ Object ได้



หลักจากนี้ จริงแล้วต้องทำการสร้าง Object สำหรับจัดการเชื่อมการใช้งานระหว่างฐานข้อมูลกับ Code ขึ้น แต่ในบทความนี้มีให้โหลดครับ ผมได้สร้างให้ไว้เรียบร้อย ส่วนคนที่อยากจะทำความเข้าใจลองไปศึกษาเอาเองนะครับว่า Code แต่ละส่วนมีการทำงานอย่างไร สำหรับผมมองว่ามันเกินจำเป็นครับ พูดง่ายๆว่าไม่ว่าจะทำ Project ไหนที่ต้องการใช้ Core Data ก็ใช้ File นี้ในการจัดการทั้งนั้น เพื่อความสะดวกผมเลยเอามาให้โหลดกันดูว่าครับ ( ในอนาคตอาจจะเขียนบทความแยกเพื่ออธิบายวิธีการทำงานนะครับ )

สามารถ Download File ได้ ที่นี่

หลังจากที่ Download เสร็จแล้วทำการแตก File จะได้ File ดังนี้

  • DatabaseUtility.h
  • DatabaseUtility.m

หลังจากนั้นให้นำ File ทั้งสองเพิ่มเข้าไปใน Project




ถึงตรงนี้แล้วแปลว่าเราพร้อมที่จะทำการเรียกงาน Core Data ที่เราสร้างขึ้นมาแล้วครับ


  • แก้ไข Code ใน ViewController.h

เข้าใจแล้วนะครับความรู้เก่า ( ใครยังงงอยู่ทบทวนด่วนเลยจ้า )

  • แก้ไข Code ใน ViewController.m


initWithDatabaseName เป็น Method ที่อยู่ใน DatabaseUtility


## อธิบาย Code ##


ParentData *parentData = [NSEntityDescription insertNewObjectForEntityForName:@"ParentData" inManagedObjectContext:self.databaseUtility.managedObjectContext];

เป็นการสร้าง Object ของ Class ParentData โดยอ้างอิงไปยัง Entity ParentData ใน xDataModel ผ่านการใช้งาน Object managedObjectContext ใน Class databaseUtility

parentData.stringValue = @"Test";
parentData.dateValue = [NSDate date];
parentData.boolValue = [NSNumber numberWithBool:YES];

เพิ่มค่าต่างๆ เข้าไปใน Object ใน Class ParentData

ChildData *childData = [NSEntityDescription insertNewObjectForEntityForName:@"ChildData" inManagedObjectContext:self.databaseUtility.managedObjectContext];

เป็นการสร้าง Object ของ Class ChildData โดยอ้างอิงไปยัง Entity ChildData ใน xDataModel ผ่านการใช้งาน Object managedObjectContext ใน Class databaseUtility

childData.intValue = [NSNumber numberWithInt:1];
childData.doubleValue = [NSNumber numberWithDouble:1.23];
childData.floatValue = [NSNumber numberWithFloat:1.23456];

เพิ่มค่าต่างๆ เข้าไปใน Object ใน Class ChildData

[parentData addChildDatasObject:childData];


เนื่องจาก Relation ของ parentData กับ childData เป็น 1 to Many เราก็ต้องนำข้อมูลใน childData เพิ่มเข้าไปใน parentData




เป็นการดึงข้อมูลจากฐานข้อมูลขึ้นมาแสดงผลใน Log นั่นเองครับ

การตรวจสอบว่าเราได้สร้างฐานข้อมูลขึ้นมาแล้วหรือไม่นะครับ ให้เราไปที่  ชื่อเครื่อง >> Library >> Application Support >> iPhone Simulator >> 6.0 >> Applications >> รหัส App ( ในส่วนนี้ลองหาดูเองนะครับว่าเป็นอันไหน ให้สังเกตชื่อโปรแกรมจาก File ใน Folder นั้นๆดูครับ ) >> Document 

จะสังเกตได้ว่ามี File นามสกุล .sqlite ขึ้นมาแล้วครับ นั่นหมายความว่าเราได้ทำการสร้างฐานข้อมูล CoreData ขึ้นมาแล้วนั่นเอง






บทความนี้เป็นตัวอย่างการใช้งาน CoreData ง่ายๆนะครับ แต่เราสามารถนำไปประยุกต์ใช้งานได้เองตามความต้องการเลยนะครับ

4 ความคิดเห็น:

  1. ไม่ระบุชื่อ24 สิงหาคม 2556 เวลา 13:48

    database ดาวโหลดไม่ได้แล้วครับ T^T

    ตอบลบ
  2. อยากได้ไฟล์อ่ะครับ ToT

    ตอบลบ
  3. ไฟล์โดนลบแล้วอ่าคับ เศร้าา

    ตอบลบ
  4. หาไฟล์นั้นจากไหนอะครับ ขอหน่อย

    ตอบลบ