iOS Programming: The Big Nerd Ranch Guide

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Updated for Xcode 11, Swift 5, and iOS 13, iOS Programming: The Big Nerd Ranch Guide leads you through the essential concepts, tools, and techniques for developing iOS applications. After completing this book, you will have the know-how and the confidence you need to tackle iOS projects of your own. Based on Big Nerd Ranch's popular iOS training and its well-tested materials and methodology, this bestselling guide teaches iOS concepts and coding in tandem. The result is instruction that is relevant and useful. Throughout the book, the authors explain what's important and share their insights into the larger context of the iOS platform. You get a real understanding of how iOS development works, the many features that are available, and when and where to apply what you've learned.

Author(s): Christian Keur, Aaron Hillegass
Edition: 7
Publisher: Big Nerd Ranch Guides
Year: 2020

Language: English
Commentary: Vector PDF
Pages: 506
City: Atlanta, GA
Tags: Programming; Debugging; iOS; Swift; JSON; Xcode; Mobile Applications; Elementary

iOS Programming
Table of Contents
Introduction
Prerequisites
What Has Changed in the Seventh Edition?
Our Teaching Philosophy
How to Use This Book
How This Book Is Organized
Style Choices
Typographical conventions
Necessary Hardware and Software
Chapter 1  A Simple iOS Application
Creating an Xcode Project
Model-View-Controller
Designing Quiz
Interface Builder
Building the Interface
Creating view objects
Configuring view objects
Running on the simulator
A brief introduction to Auto Layout
Making connections
Declaring outlets
Setting outlets
Defining action methods
Setting targets and actions
Summary of connections
Creating the Model Layer
Implementing action methods
Loading the first question
Building the Finished Application
Application Icons
Launch Screen
For the More Curious: Running an Application on a Device
Chapter 2  The Swift Language
Types in Swift
Using Standard Types
Inferring types
Specifying types
Number and Boolean types
Collection types
Literals and subscripting
Initializers
Properties
Instance methods
Optionals
Subscripting dictionaries
Loops and String Interpolation
Enumerations and the Switch Statement
Enumerations and raw values
Closures
Exploring Apple’s Swift Documentation
Chapter 3  Views and the View Hierarchy
View Basics
The View Hierarchy
Creating a New Project
Views and Frames
Customizing the labels
The Auto Layout System
The alignment rectangle and layout attributes
Constraints
Adding constraints in Interface Builder
Intrinsic content size
Misplaced views
Adding more constraints
Challenges
Bronze Challenge: More Auto Layout Practice
Silver Challenge: Adding a Gradient Layer
Gold Challenge: Spacing Out the Labels
For the More Curious: Retina Display
Chapter 4  View Controllers
The View of a View Controller
Setting the Initial View Controller
Tab Bar Controllers
Tab bar items
Loaded and Appearing Views
Refactoring in Xcode
Accessing subviews
Interacting with View Controllers and Their Views
Bronze Challenge: Another Tab
Silver Challenge: Different Background Colors
Chapter 5  Programmatic Views
Creating a View Programmatically
Programmatic Constraints
Anchors
Activating constraints
Layout guides
Margins
Explicit constraints
Programmatic Controls
Bronze Challenge: Points of Interest
Silver Challenge: Rebuild the Conversion Interface
For the More Curious: NSAutoresizingMaskLayoutConstraint
Chapter 6  Text Input and Delegation
Text Editing
Keyboard attributes
Responding to text field changes
Dismissing the keyboard
Implementing the Temperature Conversion
Number formatters
Delegation
Conforming to a protocol
Using a delegate
More on protocols
Bronze Challenge: Disallow Alphabetic Characters
Silver Challenge: Displaying the User’s Region
Chapter 7  Internationalization and Localization
Internationalization
Formatters
Base internationalization
Preparing for localization
Localization
NSLocalizedString and strings tables
Bronze Challenge: Another Localization
For the More Curious: Bundle’s Role in Internationalization
For the More Curious: Importing and Exporting as XLIFF
Chapter 8  Debugging
A Buggy Project
Debugging Basics
Interpreting console messages
Fixing the first bug
Caveman debugging
The Xcode Debugger: LLDB
Setting breakpoints
Stepping through code
The LLDB console
Chapter 9  UITableView and UITableViewController
Beginning the LootLogger Application
UITableViewController
Subclassing UITableViewController
Creating the Item Class
Custom initializers
UITableView’s Data Source
Giving the controller access to the store
Implementing data source methods
UITableViewCells
Creating and retrieving UITableViewCells
Reusing UITableViewCells
Editing Table Views
Editing mode
Adding rows
Deleting rows
Moving rows
Design Patterns
Bronze Challenge: Sections
Silver Challenge: Constant Rows
Gold Challenge: Favorite Items
Chapter 10  Subclassing UITableViewCell
Creating ItemCell
Exposing the Properties of ItemCell
Using ItemCell
Dynamic Cell Heights
Dynamic Type
Responding to user changes
Bronze Challenge: Cell Colors
Silver Challenge: Long Item Names
Chapter 11  Stack Views
Using UIStackView
Implicit constraints
Content hugging priorities
Content compression resistance priorities
Stack view distribution
Nested stack views
Stack view spacing
Segues
Hooking Up the Content
Passing Data Around
Bronze Challenge: More Stack Views
Chapter 12  Navigation Controllers
UINavigationController
Navigating with UINavigationController
Appearing and Disappearing Views
Dismissing the Keyboard
Event handling basics
Dismissing by pressing the Return key
Dismissing by tapping elsewhere
UINavigationBar
Adding buttons to the navigation bar
Bronze Challenge: Displaying a Number Pad
Silver Challenge: A Different Back Button Title
Gold Challenge: Pushing More View Controllers
Chapter 13  Saving, Loading, and Scene States
Codable
Property Lists
Error Handling
Application Sandbox
Constructing a file URL
Scene States and Transitions
Persisting the Items
Notification center
Saving the Items
Loading the Items
Bronze Challenge: Throwing Errors
Gold Challenge: Support Multiple Windows
For the More Curious: Manually Conforming to Codable
For the More Curious: Scene State Transitions
For the More Curious: The Application Bundle
Chapter 14  Presenting View Controllers
Adding a Camera Button
Alert Controllers
Presentation Styles
Chapter 15  Camera
Displaying Images and UIImageView
Taking Pictures and UIImagePickerController
Creating a UIImagePickerController
Setting the image picker’s delegate
Presenting the image picker modally
Permissions
Saving the image
Creating ImageStore
Giving View Controllers Access to the Image Store
Creating and Using Keys
Persisting Images to Disk
Loading Images from the ImageStore
Bronze Challenge: Editing an Image
Silver Challenge: Removing an Image
For the More Curious: Navigating Implementation Files
// MARK:
Chapter 16  Adaptive Interfaces
Size Classes
Modifying traits for a specific size class
Adapting to Dark Mode
Adding colors to the Asset Catalog
Using custom dynamic colors
Bronze Challenge: Stacked Text Field and Labels
Chapter 17  Extensions and Container View Controllers
Starting Mandala
Creating the model types
Adding resources to the Asset Catalog
Extensions
Creating a custom container view controller
Creating the MoodSelectionViewController
Creating the MoodListViewController
Handling the embed segue
Chapter 18  Custom Controls
Creating a Custom Control
Relaying actions
Using the Custom Control
Updating the Interface
Adding the Highlight View
Bronze Challenge: More Access Control
Chapter 19  Controlling Animations
Property Animators
Basic animations
Timing functions
Spring animations
Animating Colors
Animating a Button
Chapter 20  Web Services
Starting the Photorama Application
Building the URL
Formatting URLs and requests
URLComponents
Sending the Request
URLSession
Modeling the Photo
JSON Data
JSONDecoder and JSONEncoder
Parsing JSON data
Enumerations and Associated Values
Passing the Photos Around
Downloading and Displaying the Image Data
The Main Thread
Bronze Challenge: Printing the Response Information
Silver Challenge: Fetch Recent Photos from Flickr
For the More Curious: HTTP
Chapter 21  Collection Views
Displaying the Grid
Collection View Data Source
Customizing the Layout
Creating a Custom UICollectionViewCell
Downloading the Image Data
Image caching
Navigating to a Photo
Bronze Challenge: Horizontal Scrolling
Silver Challenge: Updated Item Sizes
Chapter 22  Core Data
Object Graphs
Entities
Modeling entities
NSManagedObject and subclasses
NSPersistentContainer
Updating Items
Inserting into the context
Saving changes
Updating the Data Source
Fetch requests and predicates
Silver Challenge: Photo View Count
For the More Curious: The Core Data Stack
NSManagedObjectModel
NSPersistentStoreCoordinator
NSManagedObjectContext
Chapter 23  Core Data Relationships
Relationships
Adding Tags to the Interface
Background Tasks
Silver Challenge: Favorites
Chapter 24  Accessibility
VoiceOver
Testing VoiceOver
Accessibility in Photorama
Bronze Challenge: VoiceOver Pronunciation
Chapter 25  Afterword
What to Do Next
Shameless Plugs
Index