Core Data in Swift
Data Storage and Management for iOS and OS X
by: Marcus Zarra
Published | 2016-06-15 |
---|---|
Internal code | mzswift |
Print status | In Print |
Pages | 212 |
User level | Intermediate |
Keywords | core data, ios, database, icloud, watch kit, swift, os x, |
Related titles | iOS 9 SDK Development: Creating iPhone and iPad Apps with Swift by Chris Adamson and Janie Clayton |
ISBN | 9781680501704 |
Other ISBN |
Channel epub: 9781680503289 Channel PDF: 9781680503296 Kindle: 9781680502039 Safari: 9781680502046 Kindle: 9781680502039 |
BISACs | COM051370 COMPUTERS / Programming / MacinstoshCOM084010 COMPUTERS / Desktop Applications / DatabasesCOM084010 COMPUTERS / Desktop Applications / Databases |
Highlight
Core Data is intricate, powerful, and necessary. Discover the powerful capabilities integrated into Core Data, and how to use Core Data in your iOS and OS X projects. All examples are current for macOS Sierra, iOS 10, and the latest release of Core Data. All the code is written in Swift 3, including numerous examples of how best to integrate Core Data with Appleās newest programming language.
Description
Core Data expert Marcus Zarra walks you through a fully developed application based around the Core Data APIs. You’ll build on this application throughout the book, learning key Core Data elements such as NSPredicate, NSFetchRequest, thread management, and memory management.
Start with the basics of Core Data and learn how to use it to develop your application. Then delve deep into the API details. Explore how to get Core Data integrated into your application properly, and work with this flexible API to create convenience methods to improve your application’s maintainability. Reduce your migration difficulties, integrate your Core Data app with
iCloud, and use Core Data in a queue-based environment. By the end of the book, you’ll have built a full-featured application, gained a complete understanding of Core Data, and learned how to integrate your application into the iPhone/iPad platform.
This book is based on Core Data in Objective-C, Third Edition. It focuses on Swift and adds an additional chapter on how to integrate Core Data with an efficient network implementation, with best practices on how to load and pre-load data into your Swift application.
Core Data Top Five Tips<br /> by Marcus Zarra
- In a multi-threaded environment, always turn on the<br />
-com.apple.CoreData.ConcurrencyDebug 1
setting when you are running in debug mode. This will catch threading errors during development.
- Only use one
NSManagedObjectContext
for your entire User Interface. The User Interface is designed to run on a single thread and therefore using additionalNSManagedObjectContext
instances is unnecessary and creates problems.
- If you are using the parent/child design with Core Data, do not try and reuse child
NSManagedObjectContext
instances. They are cheap and meant to be thrown away after a single use.
- Every time you ship your application with a model change, tag that commit in your version control system so that if the model accidentally gets altered you can quickly find the original.
- Every “error” that Core Data can potentially produce is a developer preventable error. If you treat them as hard errors (with a call to abort, for example) you will be able to test for them more easily and your error handling code becomes far less complex.
Contents and Extracts
- Introduction
- Is This Book for You?
- What Is Core Data?
- Online Resources
- Before We Begin
- Test Application
- The Storyboard
- The Recipe List
- The Recipe Detail
- The Edit Workflow
- Ready for Core Data
- Under The Hood
- Introducing the NSManagedObjectModel
- Integrating with the NSPersistentStoreCoordinator
- Adding the NSManagedObjectContext
- Working with NSManagedObject Instances
- Building a NSFetchRequest
- NSSortDescriptor
- Wrapping Up
- iOS: NSFetchedResultsController <b>excerpt</b>
- How to Use the NSFetchedResultsController
- Under the Hood of the NSFetchedResultsController
- Building Our Own: MSZContextWatcher
- Wrapping Up
- Versioning and Migration
- Some Maintenance Before We Migrate
- A Simple Migration
- The Difference Between Light and Heavy Migrations
- A Heavy/Manual Migration
- Fundamentals of Core Data Versioning
- Wrapping Up
- Performance Tuning
- Persistent Store Types
- Optimizing Your Data Model
- Fetching
- Faulting
- Access Patterns
- Wrapping Up
- Threading <b>excerpt</b>
- Threading and Core Data
- Working on the Main Queue
- Working off the Main Queue
- Inter-queue Communication
- Parent/Child NSManagedObjectContext Design
- Export Operation
- Import Operation
- Asynchronous Saving
- Debug Concurrency Checking
- Wrapping Up
- Bulk Changes <b>excerpt</b>
- Running with Scissors
- Doing Bulk Updates
- Notifying the Application of Changes
- Bulk Deletes
- Things to Consider When Using the Bulk Change APIs
- Wrapping Up
- Network Operations
- The Problem and The Approach
- The Solution
- Accessing the Network Operations
- Wrapping Up
- Using Core Data with iCloud
- Introducing the UIManagedDocument
- Direct NSManagedObjectContext to iCloud
- Consuming Changes from iCloud
- Under the Hood
- Migrating an Existing Application
- Desktop iCloud Integration
- Issues with Data Quantities
- Sharing Data Between iOS and OS X
- Wrapping Up
- Adding a Desktop Foundation
- Our Application
- Our Application Design
- Sharing the Data Model
- Building the Controller Layer
- Building the User Interface
- Adding a Splash of Code
- Wrapping Up
- Bindings, KVC, and KVO
- Key Value Coding
- Key Value Observing
- Cocoa Bindings and Core Data
- Other Interface Elements That Use KVO, KVC, and Core Data
- Wrapping Up
- Spotlight, Quick Look, and Core Data
- Integrating with Spotlight
- Integrating with Quick Look
- Putting It All Together
- Wrapping Up