Udemy

Core Data Fundamentals of iOS Development

วิดีโอการสอนฟรีจาก Dr. Angela Yu, Developer and Lead Instructor
Developer and Lead Instructor
คะแนน: 4.7 จากคะแนนเต็ม 5คะแนนวิทยากร
7 หลักสูตร
ผู้เรียน 3,270,847 คน
Core Data Fundamentals

คำอธิบายการบรรยาย

In this lesson, we'll introduce you to the fundamentals of core data and how to use it as a database to store data that is used in your app. This is perhaps the most complex form of location data storage, but it is also the most flexible. We'll compare Core Data against Realm and SQLite. We'll also show you how Core Data works relative to OOP and Databases.

เรียนรู้เพิ่มเติมจากหลักสูตรเต็มรูปแบบ

iOS & Swift - The Complete iOS App Development Bootcamp

From Beginner to iOS App Developer with Just One Course! Fully Updated with a Comprehensive Module Dedicated to SwiftUI!

วิดีโอออนดีมานด์ความยาว 59:37:13 • อัพเดทเมื่อ ธันวาคม 2024

You will create a portfolio of 15 apps to be able apply for junior developer jobs at a technology company
You will learn Xcode, UIKit and SwiftUI, ARKit, CoreML and CoreData.
You will learn by doing, where every lesson is incorporated into a real-world app project.
After the course, you will be able to build any app you want.
Start your own app based business
Become a digital nomad by working as a freelance iOS developer
Master creating Augmented Reality apps using Apple’s new ARKit
Create apps that use Machine Learning using Apple’s new CoreML
Master app design so you'll know how to wireframe, mockup and prototype your app idea
Master app marketing so you can publish your apps and generate downloads
ไทย [อัตโนมัติ]
ตอนนี้ เราพบคำศัพท์ใหม่ๆ มากมายที่อธิบายแนวความคิดเดียวกันกับที่เราคุ้นเคยจริงๆ ตัวอย่างเช่น ในโลกของการเขียนโปรแกรมเชิงวัตถุ เรามีบางอย่างที่เรียกว่าคลาส และในโลกของ Core Data นั้นเรียกว่าเอนทิตี และเมื่อคุณคิดถึงฐานข้อมูล นั่นเป็นเพียงตารางที่แสดงข้อมูลของคุณ และในอีกกรณีหนึ่ง เมื่อเราพูดถึงคุณสมบัติในการเขียนโปรแกรมเชิงวัตถุ จริง ๆ แล้วคล้ายกับแอตทริบิวต์ใน Core Data และในฐานข้อมูลของคุณ นั่นก็เป็นเพียงฟิลด์หรือคอลัมน์เฉพาะของตารางของคุณ ดังนั้นถ้าเราดูโต๊ะของเราจากร้านเบเกอรี่ของเรา เช่น โต๊ะของผู้ซื้อ ตัวโต๊ะเองก็เป็นคลาส และถ้าเราใช้ Core Data ตารางจะถูกเรียกว่าเอนทิตี ตอนนี้ แต่ละคอลัมน์เหล่านี้ที่มีหัวเรื่อง เช่น ที่อยู่ หมายเลข ผู้ที่จะออกใบแจ้งหนี้ หรือชื่อผู้ซื้อ เหล่านี้เป็นฟิลด์ในฐานข้อมูลของเรา และถ้าเราสร้างตารางเป็นคลาส เราจะเรียกมันว่าคุณสมบัติที่เกี่ยวข้องกับคลาส แต่ใน Core Data เรียกว่าแอตทริบิวต์ ดังนั้นทุกแถวที่นี่จึงเป็นแอตทริบิวต์ Core Data ดังนั้นที่อยู่จะเป็นแอตทริบิวต์ของนิติบุคคลของผู้ซื้อ ทีนี้ ถ้าเราเติมตารางนี้และเราให้ค่าคุณสมบัติเหล่านี้แต่ละค่า ทุกแถวที่เรามีในตารางของเราจะเป็น NSManagedObject ใหม่ล่าสุด จึงมีข้อกำหนดใหม่มากมายใน Core Data แต่จำไว้ว่า เมื่อเราพูดถึงเอนทิตี เรากำลังพูดถึงคลาส และเรากำลังพูดถึงตาราง เมื่อเรากำลังพูดถึงแอตทริบิวต์ เรากำลังพูดถึงคุณสมบัติของคลาสหรือคอลัมน์ในตาราง และเมื่อเรากำลังพูดถึง NSManagedObjects เรากำลังพูดถึงทุกแถวในตารางของเราที่เต็มไปด้วยข้อมูล ลองย่อและดูตารางทั้งสามของเราที่เราเห็นในตอนต้นของโมดูลนี้ เรามีนิติบุคคลของผู้ซื้อ เรามีเอนทิตีของผลิตภัณฑ์และเรามีเอนทิตีของคำสั่งซื้อ ทีนี้ ถ้าเราใส่ทั้งสามเอนทิตีหรือตารางทั้งหมดของเราลงในที่จัดเก็บถาวร นั่นจะกลายเป็นคอนเทนเนอร์ถาวรของเรา และคอนเทนเนอร์นี้เป็นเพียงฐานข้อมูล SQLite ที่เก็บตารางทั้งหมดของเราและความสัมพันธ์ทั้งหมดระหว่างตาราง เมื่อเราเขียนแอปของเรา เราไม่สามารถโต้ตอบกับร้านค้าถาวรโดยตรงได้ เราต้องผ่านตัวกลางที่เรียกว่าบริบท และบริบทนี้ อย่างที่ฉันพูดไปก่อนหน้านี้ เป็นเหมือนพื้นที่ชั่วคราวที่คุณอาจสร้างข้อมูลใหม่ที่คุณต้องการเพิ่มลงในฐานข้อมูลของคุณ หรือเข้าถึงข้อมูลในฐานข้อมูลของคุณ หรือระบุสิ่งที่คุณต้องการอัปเดตใน ฐานข้อมูล หรือระบุสิ่งที่คุณต้องการทำลายในฐานข้อมูล นี่คือสิ่งที่เรียกว่า CRUD และเมื่อมีคนพูดถึงฐานข้อมูล พวกเขามักจะใช้คำนี้ค่อนข้างมาก แต่มันหมายถึงทุกสิ่งที่คุณมักจะต้องการทำกับฐานข้อมูลใช่ไหม สร้าง อ่าน ปรับปรุง ทำลาย และสิ่งสำคัญที่ต้องจำไว้ก็คือใน Core Data คุณทำสิ่งนี้ในบริบท คุณอย่าทำเช่นนี้กับคอนเทนเนอร์ถาวรโดยตรง และภายในพื้นที่ตรงกลางนี้ สิ่งที่คุณทำได้คือคุณสามารถเลิกทำการเปลี่ยนแปลงหรือทำซ้ำการเปลี่ยนแปลงได้ คุณสามารถเพิ่มและทำลายและอัปเดตได้พร้อมกัน และเมื่อคุณตัดสินใจว่าคุณพอใจกับสิ่งที่คุณทำในบริบทแล้ว คุณจะบันทึกบริบทนั้นไว้ และกรอบงาน Core Data จะดูแลการมอบสถานะปัจจุบันของข้อมูลภายในบริบทไปยังร้านค้าถาวรของคุณ ดังที่ฉันได้กล่าวไว้ก่อนหน้านี้ สิ่งนี้คล้ายกับตัวอย่าง Git จริงๆ เมื่อ เมื่อเราใช้ Git อันดับแรก เราต้องเพิ่มสิ่งที่เราต้องการจะคอมมิตกับซอร์สคอนโทรลลงในพื้นที่ staging และนั่นคือตอนที่เราใช้คำสั่ง add เมื่อเราพอใจกับสิ่งที่เราต้องการจะคอมมิต เราก็ใช้คำสั่ง commit หรือไม่ ดังนั้นใน Core Data เรามีคอนเทนเนอร์ถาวรและแอปของเราไม่ได้รับอนุญาตให้โต้ตอบกับคอนเทนเนอร์ถาวรโดยตรง แต่ต้องผ่านพื้นที่ชั่วคราวนี้ซึ่งเรียกว่าบริบท และเมื่อคุณพอใจกับสิ่งที่อยู่ในบริบทแล้ว คุณได้บันทึกบริบทที่ยอมรับการเปลี่ยนแปลงเหล่านั้นในคอนเทนเนอร์ถาวรของเราหรือไม่ มาทบทวนโค้ดของเรากัน จนถึงตอนนี้ เราได้ใช้ C ใน CRUD หรือ create-read-update-destroy เท่านั้น แต่เพื่อที่จะทำอย่างนั้นได้ เราต้องเจอทุกสิ่งที่เราพูดถึงก่อนหน้านี้ รวมถึงบริบทและPersistentContainer สิ่งแรกที่เราสร้างคือคอนเท็กซ์ที่เรียกว่าค่าคงที่ และสิ่งนี้จะเข้าสู่ AppDelegate และคว้าเครื่องมือถาวรคอนเทนเนอร์ จากนั้นเราก็ดึงข้อมูลอ้างอิงไปยังบริบทสำหรับคอนเทนเนอร์ถาวรนั้น ดังนั้นหากเราดูภายใน AppDelegate ของเรา เราก็มีโปรแกรมถาวรที่โหลดแบบขี้เกียจ ดังนั้นจึงโหลดขึ้นมาได้ก็ต่อเมื่อเราดึงข้อมูลจริงหรือพยายามใช้งาน และโดยพื้นฐานแล้วมันคือคอนเทนเนอร์ใหม่ที่เป็นประเภท NSPersistentContainer และมันถูกสร้างขึ้นโดยใช้โครงสร้างที่เราระบุไว้ใน DataModel ของเราที่นี่ ซึ่งมีหนึ่งเอนทิตีที่เรียกว่า Item และ Item มีสองแอตทริบิวต์: เสร็จสิ้นและชื่อ จากนั้นเราโหลด PersistentStore และเตรียมพร้อมสำหรับการใช้งาน ตอนนี้เราเข้าถึงบริบทของ Persistent Stores ซึ่งเป็นพื้นที่ชั่วคราวหากคุณจำได้ว่าแอพของเราจะพูดคุยด้วย ต่อไป เมื่อเราเพิ่มรายการใหม่ในมุมมองตาราง เราจะสร้างวัตถุประเภทรายการใหม่ และอย่าลืมว่าคลาสนี้สร้างขึ้นโดยอัตโนมัติเมื่อเราสร้างเอนทิตีใหม่ด้วยชื่อนั้นใน DataModel ของเรา และคลาสนั้นมีสิทธิ์เข้าถึงคุณสมบัติทั้งหมดที่เราระบุเป็นแอตทริบิวต์อยู่แล้ว: ชื่อและเสร็จสิ้น ดังนั้นเราจึงสร้าง newItem ของเราและรายการนั้นเป็นวัตถุประเภท NSManagedObject ดังนั้น ถ้าคุณจำได้ว่าเราพูดไปก่อนหน้านี้แล้ว NSManagedObjects ก็คือแถวที่อยู่ในตารางของคุณ และทุกแถวจะเป็น NSManagedObject แต่ละรายการ จากนั้นเรากรอกข้อมูลในฟิลด์ทั้งหมด ดังนั้นฟิลด์ชื่อและฟิลด์เสร็จสิ้น และเมื่อเราทำเสร็จแล้ว เราก็บันทึกรายการของเรา และภายในฟังก์ชันของ saveItem เรามีวิธีนี้ที่สามารถทำให้เกิดข้อผิดพลาดได้ ดังนั้นจึงมีเครื่องหมายว่า "ลอง" และเราพยายามตรวจหาข้อผิดพลาดหากมีปัญหาใดๆ แต่สิ่งที่ทำคือดูที่บริบท พื้นที่ชั่วคราวนั้น ซึ่งเราแก้ไขตรงนี้ โดยการสร้าง NSManagedObject ใหม่ภายในบริบทนั้น จากนั้นเราบันทึกบริบทเพื่อให้เราสามารถยืนยันการเปลี่ยนแปลงที่ยังไม่ได้บันทึกใน PersistentStore ของเรา ฉันจึงรู้ว่ามีคำศัพท์และแนวคิดใหม่ๆ มากมายที่จะนำเสนอในบทเรียนนี้ ดังนั้นจึงอาจคุ้มค่าที่จะดูบทเรียนนี้สองสามครั้ง และยังต้องดูโมดูล Core Data ให้จบ และกลับมาทบทวนบางส่วน ของแนวคิดเหล่านี้เมื่อคุณได้ทำด้วยตัวเอง ดังนั้นในขั้นนี้ของหลักสูตร คุณจะเริ่มเห็นแนวคิดใหม่ๆ เข้ามาหาคุณมากขึ้น และเส้นโค้งการเรียนรู้ก็จะเพิ่มขึ้นเรื่อยๆ ดังนั้น คุณอาจพบว่าความรู้มากมายในที่นี้ต้องใช้เวลาสักพักกว่าจะซึมซับหรือฝึกฝนซ้ำๆ เพื่อให้เข้าใจได้จริงๆ ในบทเรียนต่อไป เราจะมาดูว่าเราจะสามารถจัดการกับ R ใน CRUD ได้อย่างไร หรืออ่านรายการจากคอนเทนเนอร์แบบถาวรของเรา ดังนั้นสำหรับเรื่องนั้นและอื่นๆ แล้วพบกันใหม่ในบทเรียนหน้า