Course Description
Please note: This custom-designed class is created and owned by Future Media Concepts. It is not sponsored or authorized by Apple Inc.
Course Description
This course is a continuation of Fundamentals of iOS Application Development. In it, you explore advanced features such as application settings, data persistence, using the iCloud, background processing, core location, localization, the camera and photo library. Each step will present a new and unique project built from start to finish.
Who needs to attend:
Anyone who wants to take the skills learned in Level-1 to the next step. While not required, it would also be helpful to have your own iOS device (iPhone or iPad) and be a registered developer with Apple. Many of the features demonstrated in this course will not run in the Xcode simulator and must be tested on an actual iOS device. Also, for this course you will need an Intel-based Apple computer with Xcode installed. Xcode can be downloaded from the App Store free of charge and is approximately 2.5 GB large.
Course Book
Beginning iPhone Development with Swift - Kim Topley, Fredrik Olsson, Jack Nutting, David Mark & Jeff LaMarche (Apress)
Prerequisites
Fundamentals of iOS Application Development or an equivalent knowledge is required for this course
Course Outline:
(Note: Because Swift is an emerging language Apple is releasing frequent updates. As a result, the following outline may be subject to last minute alterations not reflected here)
Day 1
Application Life Cycle and States
- The Application Life Cycle
- The Structure of an App
- The Main Run Loop
- Application Execution States
- Launch Time Tasks
- Preparing Apps for Entering the Foreground
- App State Change Notifications
- Handling Interruptions
- Inactive State
- App Termination
Concurrency and Background Processing
- Threads and concurrency
- Grand Central Dispatch (GCD)
- Executing Finite-Length Tasks
- Downloading Content in the Background
- Implementing Long-Running Tasks
- Understanding When Apps Get Launched into the Background
- Preparing Apps for Entering the Background
- Getting the User's Attention While in the Background
- Being a Responsible Background App
- Opting Out of Background Execution
Application Settings
- Adding a Settings Bundle to a Project
- Configuring the Preferences Screen
- Reading Preferences in Code
- Adding Icons to Settings Bundle
- Registering Default Values
Data Persistence
- The Application Sandbox
- Documents and Library Directories
Data Persistence: On-Device Files
- Property List Serialization
- Archiving Custom Objects
Data Persistence: Embedded SQLite Databases
- Creating and Opening the Database
- Modifying Data
Day 2
Data Persistence: Core Data
- Core Data Architecture
- Persistent Store
- Persistent Store Coordinator
- Managed Objects
- Managed Object Context
- Entities
- Transformable Attributes
- Core Data Relationships
- Fetch Requests and Predicates
- Memory Management Using Core Data
- Instance and Data Life Cycles
- Change and Undo Management
- Manipulating Relationships and Object Graph Integrity
- Cross-Store Relationships
- Issues with Unidirectional Relationships
- Non-Standard Attributes
- Managed Object Validation
- Faulting and Uniquing
- Versioning
- Troubleshooting Core Data
Day 3
Efficient App Development
- Using XCode Instruments
- Examining the Behavior of Apps or Processes
- Examining Device-Specific Features, such as Wi-Fi and Bluetooth
- Profiling Apps
- Tracking Down Problems in Source Code
- Using the Debugger
- Analyzing App Performance
- Finding Memory Problems, such as Leaks, Abandoned Memory, and Zombies
- Optimizing Apps for Greater Power Efficiency
- Performing System-Level Troubleshooting
- Saving Instrument Configurations as Templates
Web Services
- Building a RESTful App
- Coding URLs and Requests
- Modeling Custom Objects
- JSON Serialization
- Downloading Data
- Displaying Data Using Collection Views
- Application Transport Security
Day 4
Drawing with Core Graphics
Sprite Kit
- Initial Scene Customization
- Player Movement
- Adding a Player
- Geometry Calculations
- Particles
- Audio
Taps, Touches and Gestures
- The Responder Chain
- The Multitouch Architecture
- Handling Gestures
- Using Gesture Recognizers
- Detecting Multiple Taps
- Handling Pinches
- Handling Rotation
- Handling Swipes
Gyroscope and Accelerometer
- Motion Events
- Capturing Device Movement with Core Motion
- Getting the Current Device Orientation
- Gyroscope and Attitude Results
- Detecting Shake Events
- Setting and Checking Required Hardware Capabilities
Day 5
Swift and Objective-C interoperability
- Interacting with Objective-C APIs
- Using Swift and Objective-C in the Same Project
- Migrating Objective-C Code to Swift
UI Testing
- Adding Support for UI Testing to Your Project
- Anatomy of a Test Case
- New Classes for UI Testing
- Test Assertions
- Ui Recording
- Waiting for Elements in a UI Test
Unit Testing
- Introduction to Test Driven Development
- Adding Support for Unit Testing to Your Project
- Test Driven Development Techniques
- Anatomy of a Test Case
iOS Security
- System Security
- Encryption and Data Protection
- Hardware security features
- Using On-Disk Encryption
- App Security
- Network Security
- Device Controls
- Password protection
- Privacy controls
Cancelling an Open Enrollment Registration
Cancellation policy:
If notice is given 15 or more calendar days before the start of a class, the student may receive a full refund less a $100 administrative fee. If notice is given less than 15 calendar days no rescheduling or efunds are permitted.
Rescheduling Policy
If notice Is given 15 or more calendar days before the start of the class a student may reschedule . A student can reschedule a class up to two (2) times. Additional reschedules will not be allowed.
No Shows if a student does not attend a scheduled session, there will be no refund or rescheduling permitted. Payment is forfeited. FMC reserves the right to cancel classes with insufficient enrollment or in other circumstances. FMC will endeavor to give as much advance notice as possible of any change to the schedule. FMC shall not be responsible for any incidental or consequential loss arising whatsoever.