Course intended for:

The training is intended for programmers, who want to learn the basics of Swift language. Due to the diversified level of difficulty of individual tasks, the training is well suited for trainees, who have never worked with iOS SDK and for those, who are familiar with the basics, such as knowledge of the UIKit framework or CoreData.

The curriculum includes the issues of development of mobile applications for the iOS platform in Swift language. It will encompass not only the basic topics, but also those, which are used in many applications and are difficult to learn on one’s own.

Course objective:

The training objective is to get the users familiar with the iOS platform and the requirements of Apple company, associated with development of iPhone, iPod Touch and iPad applications. The training curriculum assumes development of several practical applications, which will be available in the AppStore.

During a 5-day course, the participants will learn the basics of Swift language and the APplei developer environment (Xcode IDE), the popular patterns used in the iOS platform, and they will get a broad review of several frameworks available.

Course strengths:

  • The most recent version of iOS SDK

  • Application development based on TDD approach

  • Working with the REST API server

  • Using of the local database in ORM style (CoreData)

  • Building of multi-therad applications

  • Development of multi-language interfaces for iPhone and iPad

Requirements:

The training participants are required to have the basic skills in object-oriented programming, including understanding of such concepts as a variable, loops, indicators, classes and objects.

Course parameters:

5*8 hours (5*7 net hours) of lectures and workshops (the latter constituting 80% of the training).

During the training, applications are developed from the start, which use the most frequently encountered frameworks of the popular iOS applications.

Course curriculum

  1. Swift language programming

    1. Introduction

    2. Basic Operators

    3. Strings

    4. Collections

    5. conditional instructions

    6. functions

    7. Closures

    8. Enumerations

    9. classes and structures

    10. Properties

    11. Methods

    12. Subscripts

    13. Inheritance

    14. initialization of objects

    15. deinitialization

    16. Automatic Reference Counting

    17. Optional Chaining

    18. Type conversion

    19. Nested Types

    20. Extensions

    21. Protocols

    22. Generics

  2. Swift Standard Library Reference

    1. Data types

      • String

      • Array

      • Dictionary

      • Numeric Types

    2. Protocols

      • Equatable

      • Comparable

      • Printable

    3. Functions

      • Printing

      • Algorithms

  3. Using of Swift, Cocoa and Objective-C

    1. Interoperability

    2. Mix and Match

    3. Migration

  4. Basics of functional programming in Swirft language

  5. iOS application testing

    1. Introduction to XCTest

    2. Available assertions

    3. asynchronous tests

    4. capacity tests

    5. object simulation (Mocking)

    6. Patterns and best practices

    7. Basics of UIAutomation

  6. View and navigation between views in iOS

    * Building and application structure
    
    * Discussing of NSBundle
    
    * .swift, .h, .m, .xib, .nib, .plist files
    
    * Development of objects in Interface Builder
    
    * The Model-View-Controller paradigm in iOS SDK
    
    * Presentation of IBAction and IBOutlet
    
    * Working with Storyboards
    
    * Interface building using AutoLayout
    
    * Interface building for  iPhone 4/4s and iPhone 5/5c/5s
    
    * Interface building for  iPhone 6 and iPhone 6 Plus
    
    * Interface building for  iPad and iPad mini
    
    * Development of universal applications
    
    * preparation of multi-language applications
    
    * translation of texts and graphics
    
    * translation using   Base Internationalization
    
    1. UICollectionView

      • Introduction

      • Data display on the grid

      • Discussing of UICollectionViewFlow class

      • Development of own styles

      • CollectionViewAnimations

      • CustomCollectionViewTransition

      • Discussing of UIViewControllerContextTransitioning protocol

    2. Concurrent programming

      • Thread development and handling in iOS

      • Blocks – introduction to anonymous functions

      • Methods of asynchronous code performance

      • Development of blocks and memory allocation

      • Memory management and ways to avoid a Strong Retain Cycle

      • Introduction to Grand Central Dispatch (GCD)

      • Synchronous queues

      • Asynchronous queues

      • Defining of operations for performance of tasks

      • analogies to manual thread management

      • Discussing of NSOperationQueue and NSOperation classes

      • Proper use of the NSBlockOperation class

      • NSOperation subclasses with the possibility of interruption

      • concurrent operation performance

    3. Data downloading

      • Discussing of NSURL, NSURLRequest and NSURLConnection classes

      • Discussing of NSURLConnectionDelegate protocol

      • Presentation of the NSURLSession class

      • Collection of data using NSURLConnection and completionBlock

      • Sending of POST/PUT/DELETE requests

      • working with Alamofire library

      • debugging of Internet connections

    4. Storing of information in the database

      • Introduction to CoreData

      • CRUD methods

      • development of subclasses for objects

      • creation of links between objects

      • object expansion using categories

      • importing and exporting of large quantities of data

      • generating of exemplary data

    5. Searching for data

      • Introduction of the NSPredicate class

      • combining and sorting of queries

      • Presentation of the NSFetchedResultsController protocol

      • Optimization for very large sets of data

      • Introduction to changes in database structure (Schema edition)

      • Conducting of automatic migrations

      • development of many contexts using the Parent-Child paradigm

      • Discussing of popular CoreDataStack solutions

      • Problem solving

Any questions?

* Required.


Contact
Phone +48 22 2035600
Fax +48 22 2035601
Email