Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletter Hub
Free Learning
Arrow right icon
timer SALE ENDS IN
0 Days
:
00 Hours
:
00 Minutes
:
00 Seconds
Hands-On Full-Stack Development with Swift
Hands-On Full-Stack Development with Swift

Hands-On Full-Stack Development with Swift: Develop full-stack web and native mobile applications using Swift and Vapor

eBook
$27.98 $39.99
Paperback
$48.99
Subscription
Free Trial
Renews at $19.99p/m

What do you get with eBook?

Product feature icon Instant access to your Digital eBook purchase
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
OR
Modal Close icon
Payment Processing...
tick Completed

Billing Address

Table of content icon View table of contents Preview book icon Preview Book

Hands-On Full-Stack Development with Swift

Creating the Native App

In the previous chapter, we got a little preview of server-side Swift. Now, we will switch gears, and start working with Swift on a platform that it was originally designed for: Apple's iOS. Swift is currently a very popular language for app development, not only for iOS, but also for tvOS and macOS platforms. In this chapter, we will focus on iOS and build our first iOS app in pure Swift using Xcode. We will be following the model-view-controller architectural pattern popular for building apps in iOS. In the chapter, we will cover the following:

  • The features of our Shopping List app
  • Walk through how to create a new app project using Xcode
  • The structure of an app and its Models, Views, and View Controllers
  • Learn how to use the storyboard to create and link View Controllers
  • Wire up the Table View Controllers to show Shopping List Items in our Shopping...

Features of our Shopping List app

The app we will be building is a simple Shopping List app. It is a general-purpose Shopping List app that allows users to add items to their list and check items from the list. The following is the full list of features for our app:

  • Users will be able to add Shopping List Items
  • They will be able to enter details about the items, such as the item name
  • The item can be checked to mark it as bought
  • Users will be able to view all of the items entered in the Shopping List, rearrange them, and even delete them
  • Users will be able to have more than one Shopping List and move items between Shopping Lists
  • The app will persist the data and load the Shopping Lists and their items whenever the app starts
  • Users will be able to filter the Shopping List based on items that are not checked and also be able to search for items in the list based on their names
  • Users...

Creating an app

To create an app, you will need to have Xcode installed. You can get it from Apple's App Store. Once you open Xcode, you will be greeted with the Welcome to Xcode modal. This is where you will see your most recent projects:

We will get started by selecting the Create a new Xcode project option from the dialog. If you want to just explore Swift language, you can select Get started with a playground.

Playgrounds are a hybrid between a text editor for Swift code and a code runner where you can see the result of your code as you type, making it easy to learn the language or try out something quickly.

This will open another dialog where we will be prompted to select the template for our project. There are several templates to choose from, but for our app, the Single View App is a good template to begin with:

Give your app a name and make sure the language...

Blueprinting the Shopping List Item model

Now that we understand the files and folders in our projects a little bit, let's start writing some code. We will begin by writing code for our first model, the Shopping List Item. To do so, perform the following steps:

  1. Create a new group called Models under the ShoppingList folder in your project.
  2. Then right-click and click on New File... under the Models folder and select a Swift file from the iOS template. Call this new file Item.swift and click Create.

 

  1. Copy the following code into the Item.swift file:
import UIKit
class Item {
var name: String
var isChecked: Bool
init(name: String, isChecked: Bool = false) {
self.name = name
self.isChecked = isChecked
}
}

Let's go over the code in more detail:

We define a class called Item which will serve as a blueprint for our...

Controlling the flow of our application using View Controller

iOS apps have a controller file, which as the name implies, controls the flow of your application. It's one file that's responsible for keeping track of data that will be used to render the view. It also listens to triggers from the user and reacts to them by modifying the data if needed, and re-rendering the view with the modified data. There are a few kinds of View Controllers, but the one that is most commonly used is a Table View Controller.

Table View Controllers are specialized View Controllers that are used when you want to show a list of data. It can also be used in creative ways to make more complex user interfaces, such as an image reel or a carousel. For our app, we'll use the Table View Controller to list our Shopping List Items one by one, and the View Controller will be responsible...

Wiring up the view

Storyboard is where you define the flow of your application. It's where the initial View Controller is defined and also the place where you can set up other View Controllers and connect them. Configuring our app's UI is done using Xcode, but all of these configurations can be programmatically done by writing additional code.

To use our new TableViewController file in our application, we need to edit our main storyboard. To do so, we need to perform the following steps:

  1. Delete the ViewController.swift file in our project as we will not be using it. You can do so by right-clicking on the file, selecting Delete, and then in the modal selecting Move to Trash.
  2. Open the Main.storyboard. We will click on View Controller Scene in the left pane of our storyboard file and delete it:
  1. Drag the Navigation Controller from the Object Library on the bottom...

Adding items to the list

To add items, we will need to add a new bar button to our navigation bar and set up a tap handler on the button so that we can respond to it by showing an input dialog to the user to enter the name of the item they want to add. To do so, we need to perform the following steps:

  1. Open up our Main.storyboard, search for Bar Button Item from the Object library, and drag it to the right-hand side of the navigation bar:
  1. Select the Bar Button Item and change the System Item to Add:
  1. Click the Assistant Editor to open the source code for our Table View Controller side-by-side with the storyboard:
  1. Control click on the add button (+) and drag into into your source code file where there is a blank line outside of any method and leave it:
  1. You will then see a modal where you need to change the Connection to Action and Type to UIBarButtonItem...

Editing the list

Adding the ability to edit the list of items by either deleting them or rearranging them is easy as well. All we need to do is implement few more methods to let our ItemTableViewController know that we want to delete certain rows or rearrange them and write code to update our model representing the list, which is our array of items.

First, let's implement deleting. To turn on deleting, we need to perform the following steps:

  1. Implement the tableView(_:canEditRowAt:) method. In this method, we need to return true and it will allow deleting of all rows and hence all Shopping List Items. Setting this to true will allow users to swipe the cell to the left to reveal the Delete button, or it can be swiped all the way to the left to trigger a delete:
override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool ...

Features of our Shopping List app


The app we will be building is a simple Shopping List app. It is a general-purpose Shopping List app that allows users to add items to their list and check items from the list. The following is the full list of features for our app:

  • Users will be able to add Shopping List Items
  • They will be able to enter details about the items, such as the item name
  • The item can be checked to mark it as bought
  • Users will be able to view all of the items entered in the Shopping List, rearrange them, and even delete them
  • Users will be able to have more than one Shopping List and move items between Shopping Lists
  • The app will persist the data and load the Shopping Lists and their items whenever the app starts
  • Users will be able to filter the Shopping List based on items that are not checked and also be able to search for items in the list based on their names
  • Users can update the list from any device and it will get synced

Creating an app


To create an app, you will need to have Xcode installed. You can get it from Apple's App Store. Once you open Xcode, you will be greeted with the Welcome to Xcode modal. This is where you will see your most recent projects:

We will get started by selecting the Create a new Xcode project option from the dialog. If you want to just explore Swift language, you can select Get started with a playground.

Note

Playgrounds are a hybrid between a text editor for Swift code and a code runner where you can see the result of your code as you type, making it easy to learn the language or try out something quickly.

This will open another dialog where we will be prompted to select the template for our project. There are several templates to choose from, but for our app, the Single View App is a good template to begin with:

Give your app a name and make sure the language selected is Swift (we will not check core data or other test options) and click Next:

It will prompt you to select a folder...

Blueprinting the Shopping List Item model


Now that we understand the files and folders in our projects a little bit, let's start writing some code. We will begin by writing code for our first model, the Shopping List Item. To do so, perform the following steps:

  1. Create a new group called Models under the ShoppingList folder in your project.
  2. Then right-click and click on New File... under the Models folder and select a Swift file from the iOS template. Call this new file Item.swift and click Create.

 

  1. Copy the following code into the Item.swift file:
import UIKit
class Item {
    var name: String
    var isChecked: Bool
    init(name: String, isChecked: Bool = false) {
        self.name = name
        self.isChecked = isChecked
    }
}

Let's go over the code in more detail:

We define a class calledItemwhich will serve as a blueprint for our Shopping List Items:

class Item {

We then define two properties to store a name for the item and the state of the item on whether it is checked or unchecked. These...

Left arrow icon Right arrow icon
Download code icon Download Code

Key benefits

  • • Build, package, and deploy an end-to-end app solution for mobile and web with Swift 4
  • • Increase developer productivity by creating reusable client and server components
  • • Develop backend services for your apps and websites using Vapor framework

Description

Making Swift an open-source language enabled it to share code between a native app and a server. Building a scalable and secure server backend opens up new possibilities, such as building an entire application written in one language—Swift. This book gives you a detailed walk-through of tasks such as developing a native shopping list app with Swift and creating a full-stack backend using Vapor (which serves as an API server for the mobile app). You'll also discover how to build a web server to support dynamic web pages in browsers, thereby creating a rich application experience. You’ll begin by planning and then building a native iOS app using Swift. Then, you'll get to grips with building web pages and creating web views of your native app using Vapor. To put things into perspective, you'll learn how to build an entire full-stack web application and an API server for your native mobile app, followed by learning how to deploy the app to the cloud, and add registration and authentication to it. Once you get acquainted with creating applications, you'll build a tvOS version of the shopping list app and explore how easy is it to create an app for a different platform with maximum code shareability. Towards the end, you’ll also learn how to create an entire app for different platforms in Swift, thus enhancing your productivity.

Who is this book for?

This book is for developers who are looking to build full-stack web and native mobile applications using Swift. An understanding of HTML, CSS, and JavaScript would be beneficial when building server-rendered pages with Vapor.

What you will learn

  • • Get accustomed to server-side programming as well as the Vapor framework
  • • Learn how to build a RESTful API
  • • Make network requests from your app and handle error states when a network request fails
  • • Deploy your app to Heroku using the CLI command
  • • Write a test for the Vapor backend
  • • Create a tvOS version of your shopping list app and explore code-sharing with an iOS platform
  • • Add registration and authentication so that users can have their own shopping lists

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : Mar 30, 2018
Length: 356 pages
Edition : 1st
Language : English
ISBN-13 : 9781788626279
Vendor :
Apple
Category :
Languages :
Tools :

What do you get with eBook?

Product feature icon Instant access to your Digital eBook purchase
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
OR
Modal Close icon
Payment Processing...
tick Completed

Billing Address

Product Details

Publication date : Mar 30, 2018
Length: 356 pages
Edition : 1st
Language : English
ISBN-13 : 9781788626279
Vendor :
Apple
Category :
Languages :
Tools :

Packt Subscriptions

See our plans and pricing
Modal Close icon
$19.99 billed monthly
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Simple pricing, no contract
$199.99 billed annually
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just $5 each
Feature tick icon Exclusive print discounts
$279.99 billed in 18 months
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just $5 each
Feature tick icon Exclusive print discounts

Frequently bought together


Stars icon
Total $ 141.97
Reactive Programming with Swift 4
$48.99
Hands-On Full-Stack Development with Swift
$48.99
Machine Learning with Swift
$43.99
Total $ 141.97 Stars icon

Table of Contents

12 Chapters
Getting Started with Server Swift Chevron down icon Chevron up icon
Creating the Native App Chevron down icon Chevron up icon
Getting Started with Vapor Chevron down icon Chevron up icon
Configuring Providers, Fluent, and Databases Chevron down icon Chevron up icon
Building a REST API using Vapor Chevron down icon Chevron up icon
Consuming API in App Chevron down icon Chevron up icon
Creating Web Views and Middleware Chevron down icon Chevron up icon
Testing and CI Chevron down icon Chevron up icon
Deploying the App Chevron down icon Chevron up icon
Adding Authentication Chevron down icon Chevron up icon
Building a tvOS App Chevron down icon Chevron up icon
Other Books You May Enjoy Chevron down icon Chevron up icon

Customer reviews

Rating distribution
Full star icon Full star icon Full star icon Full star icon Half star icon 4.5
(2 Ratings)
5 star 50%
4 star 50%
3 star 0%
2 star 0%
1 star 0%
Rushi Apr 10, 2018
Full star icon Full star icon Full star icon Full star icon Full star icon 5
This Book is very comprehensive and detailing out every aspect of building a server in pure swift. Immense Technical knowledge about building Rest API, Databases processes, HTML, JS, CSS, JSON structure etc is seen in this book and valuable for anyone who interested in implementing new apps. End to End phases of building and testing such applications is explained very thoroughly that even beginners can relate to.Will definitely recommend this book to others pertaining to this field.
Amazon Verified review Amazon
Greg Brown Apr 25, 2018
Full star icon Full star icon Full star icon Full star icon Empty star icon 4
As the title suggests, this book provides a decent overview of full-stack development in Swift. Since I'm already familiar with building iOS and tvOS applications using Swift, I found the chapters on Vapor most interesting. They cover the basics of setting up a Vapor server through connecting to relational and NoSQL databases and creating REST APIs. The text could benefit from some tighter editing, as well as from an update to cover Vapor 3 when it becomes available.
Amazon Verified review Amazon
Get free access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

How do I buy and download an eBook? Chevron down icon Chevron up icon

Where there is an eBook version of a title available, you can buy it from the book details for that title. Add either the standalone eBook or the eBook and print book bundle to your shopping cart. Your eBook will show in your cart as a product on its own. After completing checkout and payment in the normal way, you will receive your receipt on the screen containing a link to a personalised PDF download file. This link will remain active for 30 days. You can download backup copies of the file by logging in to your account at any time.

If you already have Adobe reader installed, then clicking on the link will download and open the PDF file directly. If you don't, then save the PDF file on your machine and download the Reader to view it.

Please Note: Packt eBooks are non-returnable and non-refundable.

Packt eBook and Licensing When you buy an eBook from Packt Publishing, completing your purchase means you accept the terms of our licence agreement. Please read the full text of the agreement. In it we have tried to balance the need for the ebook to be usable for you the reader with our needs to protect the rights of us as Publishers and of our authors. In summary, the agreement says:

  • You may make copies of your eBook for your own use onto any machine
  • You may not pass copies of the eBook on to anyone else
How can I make a purchase on your website? Chevron down icon Chevron up icon

If you want to purchase a video course, eBook or Bundle (Print+eBook) please follow below steps:

  1. Register on our website using your email address and the password.
  2. Search for the title by name or ISBN using the search option.
  3. Select the title you want to purchase.
  4. Choose the format you wish to purchase the title in; if you order the Print Book, you get a free eBook copy of the same title. 
  5. Proceed with the checkout process (payment to be made using Credit Card, Debit Cart, or PayPal)
Where can I access support around an eBook? Chevron down icon Chevron up icon
  • If you experience a problem with using or installing Adobe Reader, the contact Adobe directly.
  • To view the errata for the book, see www.packtpub.com/support and view the pages for the title you have.
  • To view your account details or to download a new copy of the book go to www.packtpub.com/account
  • To contact us directly if a problem is not resolved, use www.packtpub.com/contact-us
What eBook formats do Packt support? Chevron down icon Chevron up icon

Our eBooks are currently available in a variety of formats such as PDF and ePubs. In the future, this may well change with trends and development in technology, but please note that our PDFs are not Adobe eBook Reader format, which has greater restrictions on security.

You will need to use Adobe Reader v9 or later in order to read Packt's PDF eBooks.

What are the benefits of eBooks? Chevron down icon Chevron up icon
  • You can get the information you need immediately
  • You can easily take them with you on a laptop
  • You can download them an unlimited number of times
  • You can print them out
  • They are copy-paste enabled
  • They are searchable
  • There is no password protection
  • They are lower price than print
  • They save resources and space
What is an eBook? Chevron down icon Chevron up icon

Packt eBooks are a complete electronic version of the print edition, available in PDF and ePub formats. Every piece of content down to the page numbering is the same. Because we save the costs of printing and shipping the book to you, we are able to offer eBooks at a lower cost than print editions.

When you have purchased an eBook, simply login to your account and click on the link in Your Download Area. We recommend you saving the file to your hard drive before opening it.

For optimal viewing of our eBooks, we recommend you download and install the free Adobe Reader version 9.