Browsing articles from "January, 2011"

Pro Core Data for iOS Table of Contents

By Rob Warner  //  Development, iOS  //  No Comments

I just saw this tweet from @compoundj:

I want 2 buy “Pro core data for iOS” by @michaelprivat & @hoop33, but I can’t find the table of contents online…any suggestions?


I checked both Amazon and Apress, and sure enough — no table of contents. So, I emailed our project manager, and she’s fixing that. In the meantime, here it is, unformatted:

Chapter 1: Getting Started
What Is Core Data?
History of Persistence in iOS
Creating a Basic Core Data Application
Understanding the Core Data Components
Creating a New Project
Running Your New Project
Understanding the Application’s Components
Fetching Results
Inserting New Objects
Initializing the Managed Context
Adding Core Data to an Existing Project
Adding the Core Data Framework
Creating the Data Model
Initializing the Managed Object Context

Chapter 2: Understanding Core Data
Core Data Framework Classes
The Model Definition Classes
The Data Access Classes
Key-Value Observing
The Query Classes
How the Classes Interact
SQLite Primer
Reading the Data Using Core Data

Chapter 3: Storing Data: SQLite and Other Options
Using SQLite as the Persistent Store
Configuring the One-to-Many Relationship
Building the User Interface
Configuring the Table
Creating a Team
The Player User Interface
Adding, Editing, and Deleting Players
Seeing the Data in the Persistent Store
Using an In-Memory Persistent Store
Creating Your Own Custom Persistent Store
Initializing the Custom Store
Mapping Between NSManagedObject and NSAtomicStoreCacheNode
Serializing the Data
Using the Custom Store
What About XML Persistent Stores?

Chapter 4: Creating a Data Model
Designing Your Database
Relational Database Normalization
Using the Xcode Data Modeler
Viewing and Editing Attribute Details
Viewing and Editing Relationship Details
Using Fetched Properties
Creating Entities
Creating Attributes
Creating Relationships
Destination and Inverse
To-Many Relationship
Min Count and Max Count
Delete Rule

Chapter 5: Working with Data Objects
Understanding CRUD
Creating the Shape Application Data Model
Building the Shape Application User Interface
Enabling User Interactions with the Shapes Application
Generating Classes
Modifying Generated Classes
Using the Transformable Type
Validating Data
Custom Validation
Invoking Validation
Default Values
Undoing and Redoing
Undo Groups
Limiting the Undo Stack
Disabling Undo Tracking
Adding Undo to Shapes

Chapter 6: Refining Result Sets
Building the Test Application
Creating the Org Chart Data
Reading and Outputting the Data
Expressions for a Single Value
Expressions for a Collection
Comparison Predicates
Compound Predicates
Returning Unsorted Data
Sorting Data on One Criterion
Sorting on Multiple Criteria

Chapter 7: Tuning Performance and Memory Usage
Building the Application for Testing
Creating the Core Data Project
Creating the Data Model and Data
Creating the Testing View
Building the Testing Framework
Adding the Testing Framework to the Application
Running Your First Test
Firing Faults
Faulting and Caching
Building the Faulting Test
Taking Control: Firing Faults on Purpose
Memory Consumption
Brute-Force Cache Expiration
Expiring the Cache Through Faulting
Improve Performance with Better Predicates
Using Faster Comparators
Using Subqueries
Analyzing Performance
Launching Instruments
Understanding the Results

Chapter 8: Versioning and Migrating Data
Switching from Unversioned to Versioned
Lightweight Migrations
Migrating a Simple Change
Migrating More Complex Changes
Renaming Entities and Properties
Creating a Mapping Model
Understanding Entity Mappings
Understanding Property Mappings
Creating a New Model Version That Requires a Mapping Model
Creating a Mapping Model
Migrating Data
Running Your Migration
Custom Migrations
Making Sure Migration Is Needed
Setting Up the Migration Manager
Running the Migration

Chapter 9: Using Core Data in Advanced Applications
Creating an Application for Note and Password Storage and Encryption
Setting Up the Data Model
Setting Up the Tab Bar Controller
Adding the Tab
Managing Table Views Using NSFetchedResultsController
Understanding NSFetchedResultsController
The Fetch Request
The Managed Object Context
The Section Name Key Path
The Cache Name
Understanding NSFetchedResultsController Delegates
Using NSFetchedResultsController
Incorporating NSFetchedResultsController into MyStash
Creating the Fetched Results Controller
Implementing the NSFetchedResultsControllerDelegate Protocol
Incorporating the Fetched Results Controllers into the Tables
Creating the Interface for Adding and Editing Notes and Passwords
Splitting Data Across Multiple Persistent Stores
Using Model Configurations
Adding Encryption
Persistent Store Encryption Using Data Protection
Data Encryption
Using Encryption
Automatically Encrypting Fields
Changing the User Interface to Use the text Attribute
Testing the Encryption
Sending Notifications When Data Changes
Registering an Observer
Receiving the Notifications
Seeding Data
Adding Categories to Passwords
Creating a New Version of Seeded Data
Error Handling
Handling Core Data Operational Errors
Handling Validation Errors
Handling Validation Errors in MyStash
Implementing the Validation Error Handling Routine


I'm Rob Warner, and I'm a software developer. I live in Jacksonville, Florida, and work for Availity, LLC. The postings on this site are my own and do not necessarily reflect the views of Availity.