Getting Started
with Swift

Learn the world's fastest-growing language.

Developers have a choice of two programming languages in which to develop iOS apps: Objective-C or Swift. Apple has made it incredibly easy to mix the two languages in a single project, so they're not mutually exclusive. Swift provides greater safety and more modern features, while Objective-C provides a mature, stable environment with a tremendous ecosystem.

Put your Swift development in high gear by taking a class with a highly qualified About Objects instructor. We're deeply experienced in helping development teams transition to new paradigms. That's why for over a decade, we've been able to help developers from major companies such as Apple, Lockheed Martin, Goldman Sachs, GEICO, and Marriott get up to speed quickly on the latest technologies.

iOS Courses

Individual Courses

Bundled Courses

7 Days

5 Days

Fast. Safe. Expressive.

Swift is a modern, general-purpose programming language designed to balance powerful safety features with ease of use without sacrificing speed of execution.

Swift combines the performance of compiled languages with the conciseness of scripting languages, while providing modern language features that streamline many programming tasks. And it’s a multi-paradigm language that allows developers to blend object-oriented, procedural, and functional programming techniques.

Swift is designed to bridge seamlessly with the C libraries and Objective-C frameworks used across all Apple platforms.

Swift can also be used for server-side development on Linux as part of a broader, cross-platform Server APIs Project.

Our 2-day Swift Programming class is a great way to get up to speed quickly. If you're eager to begin getting familiar with Swift immediately, a good place to start is Apple's The Swift Programming Language, available on iTunes. For teams and individual developers who are already conversant with iOS development in Objective-C, our Transitioning to Swift course is a great way to quickly get your bearings with Swift in the context of a typical iOS app codebase.

Swift for iOS Development

One of Swift's key goals from the outset is to be the best language for Cocoa development. Its streamlined, modern syntax leads to clearer, more concise code, and its strong emphasis on safety significantly reduces the risk of runtime errors. And nearly all existing Objective-C, C, and C++ Cocoa APIs can be readily accessed from your Swift code thanks to comprehensive bridging.

An Xcode workspace

Xcode

Xcode is Apple's best-in-class IDE. You can use it to develop software on any or all of Apple's platforms. Taking our iOS Development in Swift: Comprehensive course is an excellent way to gain hands-on familiarity and learn great techniques for working with Xcode. And the good news is that now you can use Xcode to develop and build your server-side Swift codebase as well.

Bridging to Objective-C

Bridging to Objective-C

Swift provides great interoperability with Apple's existing C libraries and Objective-C frameworks for iOS and its other platforms, including macOS, tvOS, and watchOS. This goal is reflected in a number of Swift's syntactic choices — for example, the availability of named parameters for method and function prototypes.

The Swift language bridge not only allows your code to access Apple's Objective-C, C, and C++ APIs, it also allows you to mix Swift and Objective-C files in the same project, enabling you to easily access Swift APIs from Objective-C, and Objective-C APIs from Swift, with few limitations. Our Advanced iOS Development course includes comprehensive coverage of
bridging to Objective-C.

Bridging to Objective-C

Swift in Open Source

Apple open-sourced the Swift programming language in December, 2015, launching the Swift.org website to host technical documentation, community resources, and links to GitHub repositories containing source code for all Swift components: compiler, debugger, Standard Library, Foundation Framework, Package Manager, and the REPL.

Swift Evolution

As an open source project, Swift enables ideas for new features or directions to be submitted by anyone through the Swift Evolution Process. If you're interested in learning about the future direction of the Swift project, or want to participate directly, you can do so via Swift Evolution on Github.

Server-Side Swift

The Swift community is hard at work evolving early support for cross-platform development. The first supported non-Apple is Linux, and there are already server-side frameworks available from companies such as IBM, SAP, Facebook, and others. Our Server-Side Development in Swift course is a great way to get familiar with the landscape while getting some hands-on experience with Swift web development on Linux.

Web Servers

Several Swift web server frameworks are now available, including the following popular options:

Perfect Framework

Perfect

A web server and toolkit for developing applications and REST services in Swift

Vapor Framework

Vapor

A web server and framework for Swift that works on iOS, macOS, and Ubuntu

IBM Kitura Framework

IBM Kitura

A modular, package-based web server and web framework written in Swift

Our Server-Side Development in Swift course offers hands-on coverage to help you get started developing web apps and REST services using existing server-side frameworks.

Middleware

A number of middleware frameworks are now available in Swift, including the following:

SAP Cloud Platform SDK

Enables rapid development of iOS native apps that access the SAP Cloud Platform, and includes SAP's new Fiori for iOS design language that brings together business needs and iOS design principles based on Apple's Human Interface Guidelines

Facebook SDK for Swift

Provides Swift-based access to Facebook's API and native iOS UI components

Kickstarter Prelude

A collection of useful, common Swift code from Kickstarter's iOS apps

IBM Frameworks

Bluemix

Swift-based tools and frameworks for accessing the IBM cloud

Watson Developer Cloud Swift SDK

Enables iOS developers to build applications that leverage Watson's AI, machine learning, and deep learning techniques

Realm

Cross-platform object database and object server with available Swift API for macOS and Linux

You can learn more about these and other options by taking our Server-Side Development in Swift course.

Swift Package Manager

A great feature of the Swift ecosystem is a tool for managing dependencies among Swift modules called the Swift Package Manager. A module usually correlates with a build target, and defines a namespace that enforces access control constraints. A package contains one or more modules' source files, along with a manifest file ( Package.swift ), and may also contain author and license information. Each package also defines an external version number, typically using semantic versioning in the form MAJOR.MINOR.PATCH (for example, 2.1.4 ).

Developers can specify dependencies programmatically as relative or absolute URLs to required packages, along with version constraints, and each package can in turn specify dependencies in its Package.swift file. The Swift Package Manager is a build system that knows how to download and build everything necessary, including transitive (indirect) dependencies on other packages. This makes it easy for projects to manage consumption of specific versions of third-party code. See the Swift Package Manager Documentation for more information.

Our Server-Side Development in Swift course includes hands-on coverage of the Swift Package Manager.

Playgrounds and REPL

Command-line Evaluation

The LLDB debugger built into Xcode provides a rich Read-Eval-Print-Loop (REPL) integrated with the debugging environment. The REPL can also be invoked standalone from the terminal by typing xcrun swift at the shell prompt. The REPL is an interpreted environment that allows you to write and execute Swift code dynamically. So it's a quick way to experiment with smaller bits of code, with an interactive debugging mode available as needed. And when used in Xcode, the REPL provides an additional tool you can harness in LLDB command line debugging sessions.

A Brief, Sample REPL Session


1> let values = 1...5
values: CountableClosedRange =Int> = 1...5
2> let factorial = values.reduce(1, *) 
factorial: Int = 120
3> values.map { return $0 * 3 }
$R0: [Int] = 5 values {
  [0] = 3
  [1] = 6
  [2] = 9
  [3] = 12
  [4] = 15
}
4> factorial * 3
$R1: Int = 360 

Working with the REPL's Interactive Debugger

Step 1. Defining a function:

1> func factorial(_ n: Int) -> Int { 
2.     let values = 1...n 
3.     return values.reduce(1, *) 
4. }  

Step 2. Setting a breakpoint:

5> :b 3
Breakpoint 1: where = $__lldb_expr2`__lldb_expr_1.factorial (Swift.Int) -> Swift.Int + 138
  at repl.swift:3, address = 0x00000001000c609a 

Step 3. Invoking the function defined in Step (1):

5> print(factorial(4))
Execution stopped at breakpoint. Enter LLDB commands to investigate (type help for assistance.)
Process 25509 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
    frame #0: 0x00000001000c609a $__lldb_expr2`factorial(n=3) -> Int at repl.swift:3 

Step 4. Using LLDB commands to examine stack variables:

(lldb) print values
(CountableClosedRange=Int>) $R0 = 1...3
(lldb) print n
(Int) $R1 = 3 

Step 5. Continuing execution:

(lldb) continue
Process 25509 resuming
24 

Playgrounds

Swift playgrounds allow developers to experiment quickly and easily with Swift code, and they can be an excellent tool for education, making it easy to develop interactive tutorials and guides.

A Swift playground

How we can help

If you're new to Swift

The best way to get started is to take one of our 2-day Swift Programming course.

If you're interested in
Server-Side Development in Swift

A great way to get started with server-side Swift is to take our Server-Side Development in Swift course. If you're new to Swift, consider taking our 5-day Server-Side Development in Swift: Comprehensive, which includes our 2-day Swift Programming course.

If you're an Objective-C developer
Transitioning to Swift

For Objective-C developers with experience in iOS development, our Transitioning to Swift course is a great way to get up to speed quickly. You'll not only learn Swift fundamentals, but gain hands-on experience working with Cocoa APIs in Swift.

If you're an iOS developer
with Swift Experience

If you have at least six months of iOS development experience, accelerate your progress by taking our Advanced iOS Development course. The course covers accessing REST services with the URL Loading System, managing concurrency with Grand Central Dispatch and NSOperation/NSOperationQueue, working with Core Data, globally controlling your app's visual appearance with the UIAppearance API, and techniques for controller layer design to streamline maintenance and promote reuse.

Our Instructors

Our instructors have deep experience on Apple platforms, going back as far as 25 years to the early days of the NeXTSTEP operating system, which later served as the basis for iOS. All are highly accomplished enterprise developers with years of real-world experience, and they love to share great techniques they've gleaned from years in the trenches. Learn More

Our Commitment to the Platform

About Objects has a deep history on the iOS platform. We began developing iOS apps and training courses before the App Store first opened for business. And prior to that, our founders had spent nearly a decade developing mission-critical enterprise apps for Fortune 500 companies in Objective-C on the NeXT platform.

Resources

About Objects Training on Github

Example Xcode projects and lab exercise solution code from About Objects training courses.

Swift Open Source Project

Home of the Swift open source project.

Swift Evolution on GitHub

Repository that tracks the ongoing evolution of Swift, including documentation on goals, status, and process.

Swift Standard Library

The official Swift Standard Library reference documentation.

Foundation Framework Reference

The official Foundation framework reference documentation.

Cocoa Core Competencies

Apple's definitive guide to programming in the Objective-C language.

CS193p: Developing Applications for iOS

Videos of Stanford University's iOS development course lectures on iTunes, complete with handouts and sample Xcode projects.

Apple's WWDC 2017 Videos

Videos of all the presentations from WWDC 2017.

Onsite Training

Custom delivery at your location.

It's easy to request a proposal for custom, hands-on, instructor-led training at a location of your choice. As a consulting company with a focus on the enterprise, we're adept at providing training programs tailored to the needs of your development team. And our hands-on, bottom-up training approach has proven to be the shortest route to getting developers up to speed quickly.

All you need to do is submit the form below, and we'll get back to you within 24 hours with a detailed quote. Join a growing list of satisfied onsite training customers that includes Apple, Lockheed Martin, Goldman Sachs, GEICO, and Microsoft.

I'd like to arrange an onsite class.