Core Data in Objective-C, Third Edition
Data Storage and Management for iOS and OS X
by: Marcus S. Zarra
Published | 2016-06-15 |
---|---|
Internal code | mzcd3 |
Print status | In Print |
Pages | 238 |
User level | Intermediate |
Keywords | Cocoa, MAC OS X, core data, core frameworks, apple frameworks, apple API, iphone API, iphone |
Related titles | iOS 9 SDK Development: Creating iPhone and iPad Apps with Swift by Chris Adamson with Janie Clayton |
ISBN | 9781680501230 |
Other ISBN |
Channel epub: 9781680503265 Channel PDF: 9781680503272 Kindle: 9781680502015 Safari: 9781680502022 Kindle: 9781680502015 |
BISACs | COM046020 COMPUTERS / Operating Systems / MacintoshCOM030000 COMPUTERS / System Administration / Storage & RetrievalCOM030000 COMPUTERS / System Administration / Storage & Retrieval |
Highlight
Core Data is Apple’s data storage framework: it’s powerful, built-in, and can integrate with iCloud. Discover all of Core Data’s powerful capabilities, learn fundamental principles including thread and memory management, and add Core Data to both your iOS and OS X projects. All examples in this edition are written in Objective-C and are based on OS X El Capitan and iOS 9.
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 principles 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 third edition updates all examples for OS X El Capitan and iOS 9, and gets you up to speed on changes in multithreading and batch processing. There’s a new chapter on efficiently importing data from a network location, and a new discussion of how best to pre-load data into your 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
- Building a Foundation
- The Storyboard
- The Recipe List
- The Recipe Detail
- The Edit Workflow
- Ready for Core Data
- Under the Hood of Core Data
- Introducing the NSManagedObjectModel
- Integrating with the NSPersistentStoreCoordinator
- Adding the NSManagedObjectContext
- Working with NSManagedObject Instances
- Building a NSFetchRequest
- NSSortDescriptor
- Wrapping Up
- iOS: NSFetchedResultsController excerpt
- How to Use the NSFetchedResultsController
- Under the Hood of the NSFetchedResultsController
- Building Our Own: ZSContextWatcher
- 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
- Progressive Data Migration (An Academic Exercise)
- Wrapping Up
- Performance Tuning
- Persistent Store Types
- Optimizing Your Data Model
- Fetching
- Faulting
- Access Patterns
- Wrapping Up
- Threading excerpt
- Threading and Core Data
- Working on the Main Queue
- Working off the Main Queue
- Interqueue Communication
- Parent/Child NSManagedObjectContext Design
- Export Operation
- Import Operation
- Asynchronous Saving
- Debug Concurrency Checking
- Wrapping Up
- Bulk Changes excerpt
- Running with Scissors
- Doing Bulk Updates
- Notifying the Application of Changes
- Bulk Deletes
- Things to Consider When Using the Bulk Change APIs
- 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
- OS X: 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
- Dynamic Parameters
- Building the Xcode Example Project
- The DocumentPreferences Object
- Using Document Prefences
- Wrapping Up