Contents at a Glance
Preface xv
1 Your First Core Data Application 1
2 Managed Object Model Basics 19
3 Managed Object Model Migration 45
4 Managed Object Model Expansion 71
5 Table Views 91
6 Views 125
7 Picker Views 159
8 Preloading Data 189
9 Deep Copy 215
10 Performance 239
11 Background Processing 263
12 Search 281
13 Back Up and Restore with Dropbox 297
14 iCloud 331
15 Taming iCloud 351
16 Web Service Integration 379
A Preparing Grocery Dude for Chapter 1 411
B Preparing Grocery Cloud for Chapter 16 417
Index 425
Table of Contents
Preface xv
1 Your First Core Data Application 1
What Is Core Data? 1
Persistent Store Coordinator 2
Managed Object Model 4
Managed Object Context 4
When to Use Core Data 5
Introducing Grocery Dude 5
Adding Core Data to an Existing Application 6
Introducing Core Data Helper 7
Core Data Helper Implementation 9
Files 9
Paths 10
Setup 11
Saving 14
Summary 16
Exercises 16
2 Managed Object Model Basics 19
What Is a Managed Object Model? 19
Adding a Managed Object Model 20
Entities 20
Attributes 22
Integer 16/32/64 23
Float and Double 24
Decimal 25
String 25
Boolean 25
Date 25
Binary Data 26
Transformable 26
Attribute Settings 28
Subclassing NSManagedObject 29
viii Contents
Scalar Properties for Primitive Data Types 31
Snippet Demo Method 31
Creating a Managed Object 32
Backend SQL Visibility 33
Fetching Managed Objects 36
Fetch Request Sorting 38
Fetch Request Filtering 39
Fetch Request Templates 40
Deleting Managed Objects 42
Summary 43
Exercises 43
3 Managed Object Model Migration 45
Changing a Managed Object Model 45
Adding a Model Version 47
Lightweight Migration 48
Default Migration 52
Migration Manager 57
Summary 69
Exercises 69
4 Managed Object Model Expansion 71
Relationships 71
Delete Rules 77
Validation Errors 81
Entity Inheritance 86
Summary 90
Exercises 90
5 Table Views 91
Table Views 101 91
Core Data Table Views 93
Introducing CoreDataTVC 93
Fetching 95
DATASOURCE: UITableView 96
DELEGATE: NSFetchedResultsController 98
AppDelegate’s CoreDataHelper Instance 104
Contents ix
Introducing PrepareTVC 105
Data 106
View 108
Interaction 114
Introducing ShopTVC 117
Data 117
View 118
Interaction 121
Summary 122
Exercises 122
6 Views 125
Overview 125
The Target View Hierarchy 126
Introducing ItemVC 127
Keeping Reference to a Selected Item 128
Passing a Selected Item to ItemVC 128
Configuring the Scroll View and Text Fields 129
ItemVC Implementation 134
Interaction 134
DELEGATE: UITextField 136
View 137
Data 139
Units, Home Locations, and Shop Locations 143
Adding and Editing Units 145
Implementing UnitsTVC 147
Implementing UnitVC 149
Segue from UnitsTVC to UnitVC 153
Adding and Editing Home or Shop Locations 154
Configuring the Home Location Views 154
Configuring the Shop Location Views 156
Summary 158
Exercises 158
7 Picker Views 159
Overview 159
Introducing CoreDataPickerTF 160
x Contents
DELEGATE+DATASOURCE: UIPickerView 162
Interaction 164
Data 165
View 165
Introducing UnitPickerTF 168
Creating the Unit Picker 170
Connecting the Unit Picker 171
Configuring ItemVC for the Unit Picker 171
Introducing LocationAtHomePickerTF 176
Introducing LocationAtShopPickerTF 178
Creating the Location Pickers 179
Connecting the Location Pickers 180
Configuring ItemVC for the Location Pickers 181
Picker-Avoiding Text Field 186
Summary 188
Exercises 188
8 Preloading Data 189
Default Data 189
Is an Import Required? 190
Importing from XML 193
Creating an Import Context 196
Preventing Duplicate Default Data 197
Triggering a Default Data Import 198
Introducing CoreDataImporter 200
Selecting Unique Attributes 205
Mapping XML Data to Entity Attributes 206
Importing from a Persistent Store 209
Using the Default Data Store as the
Initial Store 210
Summary 213
Exercises 214
9 Deep Copy 215
Overview 215
Configuring a Source Stack 218
Configuring the Source Store 219
Contents xi
Enhancing CoreDataImporter 221
Object Info 221
Array For Entity 222
Copy Unique Object 223
Establish To-One Relationship 224
Establish To-Many Relationship 226
Establish Ordered To-Many Relationship 227
Copy Relationships 228
Deep Copy Entities 230
Triggering a Deep Copy 232
Summary 236
Exercises 236
10 Performance 239
Identifying Performance Issues 239
Implementing the Camera 240
Generating Test Data 245
Measuring Performance with SQLDebug 250
Measuring Performance with Instruments 251
Improving Performance 254
Clean Up 261
Summary 262
Exercises 262
11 Background Processing 263
Background Save 263
Background Processing 268
Introducing Faulter 269
Introducing Thumbnailer 273
Summary 279
Exercises 279
12 Search 281
Updating CoreDataTVC 282
Updating PrepareTVC 289
Summary 294
Exercises 294
xii Contents
13 Back Up and Restore with Dropbox 297
Dropbox Integration 298
Supporting Frameworks 299
Linking to Dropbox 300
Introducing DropboxHelper 302
Introducing DropboxTVC 304
Preparing CoreDataHelper 307
Building DropboxHelper 308
Local File Management 308
Dropbox File Management 310
Backup & Restore 312
Building DropboxTVC 316
Creating Backups 319
Displaying Backups 322
Restore 324
Summary 328
Exercises 328
14 iCloud 331
Overview 331
Enabling iCloud 333
Updating CoreDataHelper for iCloud 334
The iCloud Store 335
iCloud Notifications 337
The Debug Navigator 341
Disabling iCloud 342
Summary 348
Exercises 348
15 Taming iCloud 351
De-Duplication 351
Seeding 360
Developing with a Clean Slate 367
Configurations 369
Finishing Touches 370
Summary 371
Exercises 372
Contents xiii
16 Web Service Integration 379
Introducing StackMob 379
The StackMob SDK 381
Creating a StackMob Application 382
Managed Object Model Preparation 383
Configuring a StackMob Client 385
Saving 387
Underlying Changes 389
Automatic Schema Generation 390
Schema Permissions 393
Authentication 394
Securing the User Class 396
Introducing LoginVC 397
Maintaining Responsiveness 406
Summary 408
Exercises 409
A Preparing Grocery Dude for Chapter 1 411
New Xcode Project 411
Storyboard Design 412
App Icons and Launch Images 415
B Preparing Grocery Cloud for Chapter 16 417
Renaming Grocery Dude 417
Repointing File Paths 418
Renaming Groups and Tests 419
Renaming the Scheme 420
Updating the Artwork 421
Disabling Camera and Image Support 421
Workaround: Section Name Key Path Issue 422
Summary 423
Index 425