A CoreData Journey
-
Upload
ionut-alexandru-terente -
Category
Mobile
-
view
174 -
download
1
description
Transcript of A CoreData Journey
![Page 1: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/1.jpg)
A Core Data Journey
![Page 2: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/2.jpg)
Who Am I?
• Alex Terente
• Mainly iOS developer
• Consultant and working @ TAGonSoft
![Page 3: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/3.jpg)
What is Core Data?
“The Core Data framework provides generalized and automated solutions to common tasks associated with object life-cycle and object graph management, including persistence.”
![Page 4: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/4.jpg)
What is Core Data?
• Allows definition of Managed Objects
• Functionality to create, update, delete, query
• Multiple back-end storage options
![Page 5: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/5.jpg)
Storage Options• Binary
• In-memory
• XML
• Not available on the iPhone
• SQLite
• Only option that does not require the entire store to reside in memory
![Page 6: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/6.jpg)
What is not Core Data
• Core Data is not a relational database or a relational database management system
• Core Data is not a silver bullet.
![Page 7: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/7.jpg)
Core Data vs. SQLiteSQLite Core Data
Bulk/Set Operations
Yes No
Automatic object
populationNo Yes
Custom SQL Yes No
Select only certain fields
Yes No
Automated Migrations
No Yes
Less Complex Code
No Yes
![Page 8: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/8.jpg)
Interface to Core Data
NSPersistentStore
NSPersistentStoreCoordinator
NSManagedObjectContext
![Page 9: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/9.jpg)
NSPersistentStoreCoordinator
![Page 10: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/10.jpg)
NSManagedObjectModel
![Page 11: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/11.jpg)
Model Demo
![Page 12: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/12.jpg)
NSManagedObjectContext
![Page 13: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/13.jpg)
Inserting an Object
![Page 14: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/14.jpg)
Querying for Objects
![Page 15: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/15.jpg)
Deleting an Object
![Page 16: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/16.jpg)
Updating an Object
• Same as insert
• Make changes followed by ManagedObjectContext save
![Page 17: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/17.jpg)
Save Context
![Page 18: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/18.jpg)
Code Demo
![Page 19: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/19.jpg)
Migration
• Lightweight Migration
• Model versioning
![Page 20: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/20.jpg)
Lightweight migration
• Adding or removing entity, relation or attribute
• Making attribute non optional
• Making non optional attribute optional
• Renaming an atribute or entity
![Page 21: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/21.jpg)
Lightweight migration
![Page 22: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/22.jpg)
Model Versioning
![Page 23: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/23.jpg)
Model Versioning
![Page 24: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/24.jpg)
Model Versioning
![Page 25: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/25.jpg)
Code Demo
![Page 26: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/26.jpg)
Threading• Must create a new
NSManagedObjectContext for each thread
• NSManagedObjects are associated with a particular context
• NSManagedObjectContext can be updated with changes from other contexts
![Page 27: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/27.jpg)
Code Demo
![Page 28: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/28.jpg)
Core Data and iCloud
• Enabling
• Add iCloud Persistent Store
![Page 29: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/29.jpg)
Enabling iCloud
![Page 30: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/30.jpg)
![Page 31: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/31.jpg)
Enabling iCloud
![Page 32: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/32.jpg)
iCloud Persistent Store
![Page 33: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/33.jpg)
Resources
• Core Data Programming Guide
• Core Data Model Versioning and Data Migration
• iCloud Programming Guide for Core Data
• iCloud Design Guide
• Code Sample https://github.com/TAGonSoft/CoreData_CodeCamp
![Page 34: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/34.jpg)
Q & A
![Page 35: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/35.jpg)
Thank You
Please feel the evaluation form
A Core Data Journey
Alex Terente
TAGonSoft.com
![Page 36: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/36.jpg)
![Page 37: A CoreData Journey](https://reader038.fdocuments.net/reader038/viewer/2022103000/554f5059b4c905423f8b51cb/html5/thumbnails/37.jpg)