iOS & Swift

iOS Apprentice

In this iOS programming book for beginners, you'll learn how to build five complete iOS and Swift apps by following easy step-by-step tutorials. By Eli Ganim & Joey deVilla.

Read for Free with the Personal Plan* * Includes this and all other books in our online library See all benefits
Buy Individually $59.99* *Includes access to all of our online reading features.
Leave a rating/review
Download materials
Comments
Save for later
Share

Who is this for?

This book is for anyone completely new to Swift and iOS development — or for those that just need a little brushing-up!

Covered concepts

  • Working with Xcode
  • Coding in Swift
  • Building user interfaces
  • Modelling and persisting data
  • GPS and image data
  • Accessing remote APIs
  • iPad development
  • Publishing to the App Store
For Complete Beginners! If you’re completely new to Swift and iOS development (or need a brush-up), this is the series for you.

The iOS Apprentice is a series of epic-length tutorials for beginners where you’ll learn how to build four complete apps from scratch.

Each new app will be a...

more

Before You Begin

This section tells you a few things you need to know before you get started, such as what you’ll need for hardware and software, where to find the project files for this book, and more.

Getting Started with UIKit

In this section, you’ll learn about UIKit, which is the way to build the UI of your app. UIKit has been around since the first iOS and is currently powering all of the existing iOS apps in the App Store.

You’ll start by creating a basic view to understand how UIKit works, how it places UI elements on the screen and how to interact with them. You’ll also read about the most common design pattern used when building apps using UIKit. You’ll then go on to create Bullseye!

1
Toggle description
Welcome to **The iOS Apprentice!** In this book, you're about to deep dive into the latest and greatest Swift and iOS best practices. Throughout this six-section book, you will build six iOS projects using both UIKit and SwiftUI. Good luck!
2
Toggle description
In this chapter, you will start building Bullseye using UIKit, Apple's existing way of building UI for iOS apps.
3
Toggle description
Congratulations, you have a UIButton on the screen. It's time to start adding the UISlider which will be fundamental to the game.
4
Toggle description
You'll be well on your way of noticing the differences between building an app using SwiftUI and now UIKit. In this chapter you will deal with random numbers, adding rounds to the game and calculating the points scored.
5
Toggle description
It's time to start calculating the score for the gameplay in this chapter.
6
Toggle description
In this chapter, we will add some UIKit polish to the app and show an alert to the user.
7
Toggle description
The look of your app is super important now as many apps flood the App Store. In this chapter, we're going to spruce up the UI with some fancy artwork.
8
Toggle description
Phew! You have successfully created Bullseye using UIKit. In this final chapter of this section you will learn about supporting different device sizes and add some beautiful animations.

Checklists

This section builds upon what you learnt in the previous section by introducing you to your second app. Checklists takes you from a single-screen app to a multi-screen app where you learn the concepts of navigation flow, displaying data lists, and the idea of modelling and persisting your data.

If you want to build any sort of list-based iOS app, this section is a good starting point for learning the basics. Of course, even if you aren’t building a list-based app, this section has some basic concepts such as handling the navigation flow from one screen to another (and back again) that would be very useful to an apprentice iOS developer.

Toggle description
We're going to look at UITableView and UINavigationController in this Chapter. The majority of your apps in the future will be using these key frameworks provided by Apple.
Toggle description
In this chapter, we're going to introduce you to MVC (a programming design pattern) widely used in the Apple ecosystem. We will also separate our data logic into models.
Toggle description
A UINavigationController is super important to control the flow of the navigation in our apps. We'll introduce you to it here and start building out the navigation stack ready for the next chapter.
Toggle description
A to-do list app is no good if we can't add an item, right? In this chapter we'll create a new screen to do just that.
Toggle description
In this chapter we'll introduce you to Delegates and Protocols and the concepts within. Again these are widely used across iOS development.
Toggle description
You've tackled adding a new item, we're now going to build out the functionality of our to-do list app with editing existing items in our list.
Toggle description
Our app is looking great, but every time you launch the app the data will be lost! Let's fix this by exploring how to save data and show a loading HUD.
Toggle description
Our app currently only manages one list of to-do list items. Let's explore having multiple lists in this chapter.
Toggle description
In this Chapter, we're going to improve our data model and make our app more scalable for the future. If you want to build any sort of list-based iOS app, this section is a good starting point for learning the basics. Of course, even if you aren't building a list-based app, this section has some basic concepts such as handling the navigation flow from one screen to another (and back again) that would be very useful to an apprentice iOS developer.
Toggle description
UserDefaults is a very popular framework provided by Apple and can be seen in many apps. Let's explore UserDefaults and why it will fit this project perfectly.
Toggle description
In this Chapter, we're going to make some vital UI improvements
Toggle description
To finish Checklists it's time to explore LocalNotifications and their use.

My Locations

With this third section and the MyLocations app, you get into Swift programming in earnest.

Sure you’ve already done coding in the previous sections, but this section starts with a good review of all the Swift coding principles you’ve learned so far and added to it by introducing some new concepts, too. In addition to that, you learn about using GPS coordinates, displaying data on maps, and using the iOS image picker to take photos using your camera or to pick existing images from your photo album. There’s a lot of valuable general information on Swift development as well as specific information about building location-aware apps.

Toggle description
You have made great progress. You have built your first app using UIKit which is some achievement. Whilst we have been writing the apps using Swift, you will need some additional theory to level up your knowledge. In this chapter, we will go into details about some of the Swift language, such as Variables, Constants, Types, Methods & Functions, Loops, and Objects.
Toggle description
Are you ready for the final app challenge? In this chapter, you will commence the final app MyLocations. It's all about using the Core Location framework and displaying using MapKit.
Toggle description
You've learned about getting GPS coordinate information. Now it's time to deal with GPS errors, improving GPS results and testing on real devices to mimic real-world scenarios.
Toggle description
This question will most likely crop up in your next iOS interview. It's time to put the toolbox down and learn some theory. Expect to learn about classes, inheritance, overriding methods and casting an object.
Toggle description
In this chapter, you will be picking up the toolbox again and building our tag location screen. This involves building out some TableViewCells, displaying location info and adding a category picker.
Toggle description
Who doesn't love adding a bit of polish? It's time to start making it look more like an app ready for the App Store. We will improve the experience of the app and add a loading 'HUD'.
Toggle description
At this point, you have an app that obtains GPS coordinates and allows the user to tag the location. We're going to be deep-diving into Core Data, the object persistence framework for iOS apps.
Toggle description
Now that you can persist the data to Core Data, we're going to explore displaying this data in the TableView. Learn about TableView sections, NSFetchedResults and add functionality to delete tagged locations.
Toggle description
Showing a list of locations is great, but not very visually appealing. In this chapter, you will learn about MapKit, the awesome map view control giving in the iOS toolbox.
Toggle description
UIKit comes with a built-in view controller, UIImagePickerController that lets users take new photos or select existing ones. In this chapter explore this controller and how best to display the image on the screen.
Toggle description
You have made it this far! It's time to give MyLocations a complete makeover. Prepare your pixel paintbrush for this chapter and let's get your creative flair at the ready. In this chapter you will cover the map screen improvements by adding icons, polishing the main screen and adding some cool effects to the app.

Store Search

This section of the book covers iPad support in more detail via the Store Search app.

Store Search shows you how to have separate custom screens both for specific orientations (landscape vs. portrait) as well as for specific platforms (iPhone vs. iPad). This section covers networking, working with remote API endpoints to fetch data needed by your app, and how to parse the fetched data. If that wasn’t enough, this section also takes you through the full application life cycle — from developing the code, testing it, and all the way to submitting to Apple. So don’t skip this section thinking that you know all about iOS development after the last few sections!

Toggle description
One of the most common tasks for mobile apps is to talk to a server. In this final UIKit app you will build StoreSearch. In this chapter, you will build the first screens, add fake searches and create the data models.
Toggle description
Before your app can search the iTunes store for real, we need to make the app look visually appealing. In this chapter, you will cover custom table view cells and nibs. Learn a little more about using git and the debugger right inside Xcode.
Toggle description
Networking you say? Start querying the iTunes web service by using HTTP requests. An introduction to JSON and best to convert them into data models and finally look at how best to sort results.
Toggle description
Phew! You will rarely want to block the main thread with a network request. In this chapter, we will explore asynchronous networking and finally showing an activity indicated to let the user know something is loading.
Toggle description
The iOS toolbox and the Swift language has many tools for our disposal, including URLSession. In this chapter, we will explore URLSession and it's many benefits. Downloading the iTunes artwork and how best to merge your git changes.
Toggle description
In this chapter, we will create a detail pop-up view when a user taps a row in the TableView. We don't want to display too much information now, do we?
Toggle description
We're about to get the polish back out again. The detail pop-up view is working well but we can display the information better. Learn about dynamic types, gradients for the background and let's explore adding some more animations.
Toggle description
Users expect apps to work in both portrait and landscape. They also expect the app to look great in both orientations. In this chapter, we will learn about adding a completely different user interface for landscape vs. portrait.
Toggle description
The final app is looking great. You should put your feet up and grab a coffee! Programming is all about building new pretty features but when you join an existing company with an existing code-base you have to learn about the best ways to refactor existing code. Let's go!
Toggle description
So far our app works great in English. But if you want your app to go international you must support multiple languages and formats. In this chapter, you will explore adding support for a new language and look at regional settings.
Toggle description
Even though the app works _OK_ on the iPad, but it's not exactly optimized for the iPad. In this chapter, we're going to explore universal apps, the split view controller functionality, and dark mode support.
Toggle description
Are you ready to ship to the App Store? Finally, you will learn the key fundamentals on how to ship the app to the App Store, including the Apple Developer Program, beta testing using TestFlight and finally submitting to the App Store.

Getting Started with SwiftUI

This section introduces you to the first of the two apps you’ll build throughout this book using SwiftUI: Bullseye. It’s a simple game that challenges the user to move a slider to a specific position without any hints or markers. While it won’t make you an App Store millionaire, the exercise of writing it will introduce you to the basics of writing iOS apps.

Finally, you’ll get your first taste of something that even the most experienced iOS developers haven’t had much time to try: SwiftUI. It’s the new way to build user interfaces for Apple platforms, and like the programming language from which it takes its name, it’s simple and powerful. The first two apps that you’ll make in this book will give you a great head start in building interfaces with SwiftUI.

This section aims to be beginner-friendly, and you may be tempted to skip it. Please don’t, especially if you’re new to iOS development. You’ll need the fundamentals introduced in this section for later parts of the book, and you’ll miss out on the basics of the all-new SwiftUI.

Toggle description
Take the first step of building a SwiftUI game by creating your iOS project, add some interactivity with a UIButton and learn all about the anatomy of an app.
Bullseye is all about the slider, get sliding in this chapter by using the Slider control and start constructing the first steps of a working game.
Toggle description
Apps are known for their clean and simple UI. We will spice up the artwork in this chapter and make it look like a *real* game. We will also make improvements to landscape orientation.

Checklists

In this section, you’ll build Checklists. As you may have gathered from the name, it’s a TODO app that lets the user create, manage, and track items in one or more lists. Lists are a key part of many apps, and the lessons you’ll learn while building Checklists will serve you well when you start coding your creations.

This is the second iOS app you will build using Apple’s brand new UI framework SwiftUI.

It's time to start your next iOS project. Are you ready for the challenge? In this chapter, we will commence our next app using SwiftUI, Checklists. Before we dive into building Checklists this chapter will cover a Playgrounds project and explore some core concepts.
Toggle description
It's time to start your next iOS project. Are you ready for the challenge? In this chapter, we will commence our next app using SwiftUI, Checklists. Prepare for NavigationView, Arrays, Loops and removing items from the list.
Toggle description
A Checklist app without being able to tick off the items? In this chapter, you will add the toggle for a Checklist item.
Toggle description
You have eagerly made great progress on creating a TODO list app by adding the checked status. In this chapter, you will start adding more features and start thinking about iOS design patterns.
Toggle description
Your goal in this chapter is to start adding new items to your TODO list app. It also included learning about CRUD (Create, report, update and delete).
Toggle description
Congratulations! You can now add new items to your TODO list app, in this chapter, it's time to start editing your list and changing the text.
Toggle description
In this final chapter for your TODO list app, you will learn about data persistence. Right now all the items are hardcoded so it's time to persist and go!