Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Save more on your purchases now! discount-offer-chevron-icon
Savings automatically calculated. No voucher code required.
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Conferences
Free Learning
Arrow right icon
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

Arrow left icon
Profile Icon Ankur Patel
Arrow right icon
€36.99
Paperback Mar 2018 356 pages 1st Edition
eBook
€20.98 €29.99
Paperback
€36.99
Subscription
Free Trial
Renews at €18.99p/m
Arrow left icon
Profile Icon Ankur Patel
Arrow right icon
€36.99
Paperback Mar 2018 356 pages 1st Edition
eBook
€20.98 €29.99
Paperback
€36.99
Subscription
Free Trial
Renews at €18.99p/m
eBook
€20.98 €29.99
Paperback
€36.99
Subscription
Free Trial
Renews at €18.99p/m

What do you get with Print?

Product feature icon Instant access to your digital eBook copy whilst your Print order is Shipped
Product feature icon Paperback book shipped to your preferred address
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
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
Estimated delivery fee Deliver to Ireland

Premium delivery 7 - 10 business days

€23.95
(Includes tracking information)

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 : 9781788625241
Vendor :
Apple
Category :
Languages :
Tools :

What do you get with Print?

Product feature icon Instant access to your digital eBook copy whilst your Print order is Shipped
Product feature icon Paperback book shipped to your preferred address
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
Estimated delivery fee Deliver to Ireland

Premium delivery 7 - 10 business days

€23.95
(Includes tracking information)

Product Details

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

Packt Subscriptions

See our plans and pricing
Modal Close icon
€18.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
€189.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
€264.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 106.97
Machine Learning with Swift
€32.99
Hands-On Full-Stack Development with Swift
€36.99
Reactive Programming with Swift 4
€36.99
Total 106.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
Get free access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

What is the delivery time and cost of print book? Chevron down icon Chevron up icon

Shipping Details

USA:

'

Economy: Delivery to most addresses in the US within 10-15 business days

Premium: Trackable Delivery to most addresses in the US within 3-8 business days

UK:

Economy: Delivery to most addresses in the U.K. within 7-9 business days.
Shipments are not trackable

Premium: Trackable delivery to most addresses in the U.K. within 3-4 business days!
Add one extra business day for deliveries to Northern Ireland and Scottish Highlands and islands

EU:

Premium: Trackable delivery to most EU destinations within 4-9 business days.

Australia:

Economy: Can deliver to P. O. Boxes and private residences.
Trackable service with delivery to addresses in Australia only.
Delivery time ranges from 7-9 business days for VIC and 8-10 business days for Interstate metro
Delivery time is up to 15 business days for remote areas of WA, NT & QLD.

Premium: Delivery to addresses in Australia only
Trackable delivery to most P. O. Boxes and private residences in Australia within 4-5 days based on the distance to a destination following dispatch.

India:

Premium: Delivery to most Indian addresses within 5-6 business days

Rest of the World:

Premium: Countries in the American continent: Trackable delivery to most countries within 4-7 business days

Asia:

Premium: Delivery to most Asian addresses within 5-9 business days

Disclaimer:
All orders received before 5 PM U.K time would start printing from the next business day. So the estimated delivery times start from the next day as well. Orders received after 5 PM U.K time (in our internal systems) on a business day or anytime on the weekend will begin printing the second to next business day. For example, an order placed at 11 AM today will begin printing tomorrow, whereas an order placed at 9 PM tonight will begin printing the day after tomorrow.


Unfortunately, due to several restrictions, we are unable to ship to the following countries:

  1. Afghanistan
  2. American Samoa
  3. Belarus
  4. Brunei Darussalam
  5. Central African Republic
  6. The Democratic Republic of Congo
  7. Eritrea
  8. Guinea-bissau
  9. Iran
  10. Lebanon
  11. Libiya Arab Jamahriya
  12. Somalia
  13. Sudan
  14. Russian Federation
  15. Syrian Arab Republic
  16. Ukraine
  17. Venezuela
What is custom duty/charge? Chevron down icon Chevron up icon

Customs duty are charges levied on goods when they cross international borders. It is a tax that is imposed on imported goods. These duties are charged by special authorities and bodies created by local governments and are meant to protect local industries, economies, and businesses.

Do I have to pay customs charges for the print book order? Chevron down icon Chevron up icon

The orders shipped to the countries that are listed under EU27 will not bear custom charges. They are paid by Packt as part of the order.

List of EU27 countries: www.gov.uk/eu-eea:

A custom duty or localized taxes may be applicable on the shipment and would be charged by the recipient country outside of the EU27 which should be paid by the customer and these duties are not included in the shipping charges been charged on the order.

How do I know my custom duty charges? Chevron down icon Chevron up icon

The amount of duty payable varies greatly depending on the imported goods, the country of origin and several other factors like the total invoice amount or dimensions like weight, and other such criteria applicable in your country.

For example:

  • If you live in Mexico, and the declared value of your ordered items is over $ 50, for you to receive a package, you will have to pay additional import tax of 19% which will be $ 9.50 to the courier service.
  • Whereas if you live in Turkey, and the declared value of your ordered items is over € 22, for you to receive a package, you will have to pay additional import tax of 18% which will be € 3.96 to the courier service.
How can I cancel my order? Chevron down icon Chevron up icon

Cancellation Policy for Published Printed Books:

You can cancel any order within 1 hour of placing the order. Simply contact customercare@packt.com with your order details or payment transaction id. If your order has already started the shipment process, we will do our best to stop it. However, if it is already on the way to you then when you receive it, you can contact us at customercare@packt.com using the returns and refund process.

Please understand that Packt Publishing cannot provide refunds or cancel any order except for the cases described in our Return Policy (i.e. Packt Publishing agrees to replace your printed book because it arrives damaged or material defect in book), Packt Publishing will not accept returns.

What is your returns and refunds policy? Chevron down icon Chevron up icon

Return Policy:

We want you to be happy with your purchase from Packtpub.com. We will not hassle you with returning print books to us. If the print book you receive from us is incorrect, damaged, doesn't work or is unacceptably late, please contact Customer Relations Team on customercare@packt.com with the order number and issue details as explained below:

  1. If you ordered (eBook, Video or Print Book) incorrectly or accidentally, please contact Customer Relations Team on customercare@packt.com within one hour of placing the order and we will replace/refund you the item cost.
  2. Sadly, if your eBook or Video file is faulty or a fault occurs during the eBook or Video being made available to you, i.e. during download then you should contact Customer Relations Team within 14 days of purchase on customercare@packt.com who will be able to resolve this issue for you.
  3. You will have a choice of replacement or refund of the problem items.(damaged, defective or incorrect)
  4. Once Customer Care Team confirms that you will be refunded, you should receive the refund within 10 to 12 working days.
  5. If you are only requesting a refund of one book from a multiple order, then we will refund you the appropriate single item.
  6. Where the items were shipped under a free shipping offer, there will be no shipping costs to refund.

On the off chance your printed book arrives damaged, with book material defect, contact our Customer Relation Team on customercare@packt.com within 14 days of receipt of the book with appropriate evidence of damage and we will work with you to secure a replacement copy, if necessary. Please note that each printed book you order from us is individually made by Packt's professional book-printing partner which is on a print-on-demand basis.

What tax is charged? Chevron down icon Chevron up icon

Currently, no tax is charged on the purchase of any print book (subject to change based on the laws and regulations). A localized VAT fee is charged only to our European and UK customers on eBooks, Video and subscriptions that they buy. GST is charged to Indian customers for eBooks and video purchases.

What payment methods can I use? Chevron down icon Chevron up icon

You can pay with the following card types:

  1. Visa Debit
  2. Visa Credit
  3. MasterCard
  4. PayPal
What is the delivery time and cost of print books? Chevron down icon Chevron up icon

Shipping Details

USA:

'

Economy: Delivery to most addresses in the US within 10-15 business days

Premium: Trackable Delivery to most addresses in the US within 3-8 business days

UK:

Economy: Delivery to most addresses in the U.K. within 7-9 business days.
Shipments are not trackable

Premium: Trackable delivery to most addresses in the U.K. within 3-4 business days!
Add one extra business day for deliveries to Northern Ireland and Scottish Highlands and islands

EU:

Premium: Trackable delivery to most EU destinations within 4-9 business days.

Australia:

Economy: Can deliver to P. O. Boxes and private residences.
Trackable service with delivery to addresses in Australia only.
Delivery time ranges from 7-9 business days for VIC and 8-10 business days for Interstate metro
Delivery time is up to 15 business days for remote areas of WA, NT & QLD.

Premium: Delivery to addresses in Australia only
Trackable delivery to most P. O. Boxes and private residences in Australia within 4-5 days based on the distance to a destination following dispatch.

India:

Premium: Delivery to most Indian addresses within 5-6 business days

Rest of the World:

Premium: Countries in the American continent: Trackable delivery to most countries within 4-7 business days

Asia:

Premium: Delivery to most Asian addresses within 5-9 business days

Disclaimer:
All orders received before 5 PM U.K time would start printing from the next business day. So the estimated delivery times start from the next day as well. Orders received after 5 PM U.K time (in our internal systems) on a business day or anytime on the weekend will begin printing the second to next business day. For example, an order placed at 11 AM today will begin printing tomorrow, whereas an order placed at 9 PM tonight will begin printing the day after tomorrow.


Unfortunately, due to several restrictions, we are unable to ship to the following countries:

  1. Afghanistan
  2. American Samoa
  3. Belarus
  4. Brunei Darussalam
  5. Central African Republic
  6. The Democratic Republic of Congo
  7. Eritrea
  8. Guinea-bissau
  9. Iran
  10. Lebanon
  11. Libiya Arab Jamahriya
  12. Somalia
  13. Sudan
  14. Russian Federation
  15. Syrian Arab Republic
  16. Ukraine
  17. Venezuela