0% found this document useful (0 votes)
9 views

Roadmap IOS Assist

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views

Roadmap IOS Assist

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 1

iOS Roadmap

XCode IDE

MVC & MVVM Swift SwiftUI

Protocols &
Reactive

delegates programming

Dispatch queue Network


RESTful APIs &

programming Socket APIs


Observers &

notifications
Data persistance NSKeyedArchiver

Realm

CocoaPods Package mananger

Carthage
Testing XCTest

Mocks

Project &
Build confing
Workspace

Target
Ready to launch

Resources

iOS: Swift Basics


Swift is the official programming language for macOS, iOS, watchOS and tvOS
developed by Apple.

Documentation:

• Basics
• Enumeration

• Basic Operators
• Structure and Classes

• Collection Types
• Initialization

• Control Flow
• Extensions

• Functions
• Protocols

• Closures
• Examples

IOS basics: User interface


Most iOS apps are built using components from UIKit, a programming
framework that defines common interface elements. These elements are
flexible and adaptable, making it easy to develop on any iOS device. The
interface elements from UIKit are divided into three main categories:

• Bars – provides navigation, screen title, has views that initiates actions

• Views – provides the app’s content such as text, graphics, animations, etc.

• Controls – provides call to action, they are represented by buttons, switches,


text fields, etc.

Building a Basic UI:

Using this link you will find a set of lessons to build a basic app called
FoodTracker. This app shows a list of meals, including a meal name, rating
and photo. These lessons cover the basic concepts for iOS app development
and many valuable features of XCode, the official IDE for developing iOS apps.

Resources

Advanced UI:

Auto Layout calculates the size and position of all the views in a view
hierarchy based on constraints placed on those views. Auto Layout can be
used without constraints with Stack Views. Stack Views defines rows or
columns of UI elements.

Here are some links with the documentation and tutorials for Auto Layout to
get started:

o Documentation

o Beginner Tutorial

o Advanced Tutorial

iOS: Mul ti pl e screens


To build a screen in your app you need to use a custom subclass of
UIViewController. View controllers can be one of two types:

• content view controllers – they own all of their views and manage the data
for them. Most view controllers belong to this type.

• container view controllers – they do not own all of their views, some are
managed by other controllers, also known as child view controllers.

UIWindow

rootViewController

Container

View Controller

childViewControllers
View
View Controller

View
View Controller

Fig. 1 – Container View Controller

In fig. 1 there is a container view controller acting as a root view controller. The
container has the role of positioning its children side by side and manage
their presentation.

Resources

There are two ways to display a view controller: embed it in a container view,
present it or push it. Presenting a view controller creates a relationship
between the presenting view controller and the presented view controller.
Pushing a view controller implies you are inside an UINavigationController.

The methods of displaying or switching view controllers are:

• Segue – you drag the connections between view controllers from the design
view.

• Present (programmatically)

if let vc = UIStoryboard(name: "Main", bundle: nil).

instantiateViewController(withIdentifier: "LoginVC") as? LoginVC

present(vc, animated: true, completion: nil)

• Push (programmatically)

if let viewController = UIStoryboard(name: "Details", bundle: nil).

instantiateViewController(withIdentifier: "DetailsVC") as? DetailsVC {

if let navigator = navigationController {

navigator.pushViewController(viewController, animated: true)

}}

iOS: D ata st o ra g e
NSCoding:

The most basic method to persist data in iOS is using NSCoding. This method
is working by assigning a particular key to each property from the model.
These keys will be used to search and load specific objects. The model class
needs to conform to NSCoding protocol and subclass NSObject. For example:

final class User: NSObject, NSCoding {

var id: Int

var name: String

var email String

init(id: Int, name: String, email: String) {

this.id = id

this.name = name

this.email = email

Resources

fun encode(with aCoder: NSCoder) {

aCoder.encode(id, forKey: „id”)

aCoder.encode(name, forKey: „name”)

aCoder.encode(email, forKey: „email”)

init?(coder aDecoder: NSCoder) {

id = aDecoder.decodeInteger(forKey: „id”)

name = aDecoder.decodeObject(forKey: „name”) as! String

email = aDecoder.decodeObject(forKey: „email”) as! String

Keychain Services:

The keychain services API is a mechanism that stores small bits of user data in

an encrypted database called a keychain. The keychain is used to safely store

small secrets such as passwords, credit card information and others.

Realm (For advanced):

When not using the basic method NSCoding, you can use third party libraries
like Realm to persist data locally on device. Realm is a noSQL database, it is
lightweight and highly performant, capable of handling large data loads and
running queries in fractions of a second.

iOS: Bac k g r o u n d tas k s


Normally, when you execute your app on your phone, it runs on the Main
Thread or the UI Thread. If you try to do some time-consuming task in the Main
Thread, the UI will stop responding for a while. In this case you will use
multithreading.

Multithreading allows the processor to create concurrent threads from which


it can switch between, so multiple tasks can be executed at the same time.

One of the methods that handles background tasks in the iOS framework is
DispatchQueue, that can execute tasks on another thread in two ways:

• Serial (synchronous) – blocks the calling thread and waits for the previous
task to finish execution before starting the next one

Resources

let queue = DispatchQueue(label: „someLabel”)

queue.async { doSomeWork() }

• Concurent (asynchronous) – doesn’t’ t block the calling thread executing the


tasks simultaneously

let queue = DispatchQueue(label: „someLabel”, qos: .default, attributes:


.concurrent)

queue.async { doSomeWork() }

RxSwift (For advanced):

Rx is a library for composing asynchronous and event-based apps using


observable sequences. RxSwift is the swift extension that can be used for
asynchronous operations such as network calls, notification, view bindings,
etc. Tutorials to get started, here and here.

Promise Kit (For advanced):

PromiseKit is an alternative to RxSwift, they are simple, easy to use, but not as
complex as RxSwift. Tutorial to get started here.

iOS: N etw o r k in g
URLSession:

URLSession class provides an API for downloading data from and uploading to
endpoints indicated by URLs. This class creates a http session which handles a
data transfer task. For basic requests URLSession has a singleton shared
session, which is not very customizable. For a more customizable session you
can use one of the three configurations: default, ephemeral or background.
More learning materials about URLSession here.

Alamofire :

Alamofire is a HTTP networking library written in Swift and it provides an


interface that simplifies the networking task. Alamofire provides chainable
request/response methods, JSON parameter and response serialization,
authentication, and many other features. A good set of lessons here.

Kin gfisher :

Kingfisher is a Swift library for downloading and caching images from the web.

Resources

iOS: Cu st o m v iews
The iOS framework comes with many views that cover a lot of what you need.
You can also create a reusable custom view with your own appearance and
behavior. A xib file stands for XML Interface Builder and is used to separate UI
components or create custom views easily.

A quick start guide about creating a component combining an image and a


caption using a .xib file here.

iOS: Unit testin g


We usually write code for unit testing to improve software quality. Tests verify
certain conditions that are satisfied during execution and record test failures.
Apps with more unit testing tend to have fewer bugs helping the developer to
catch the mistakes early in the process. XCTest framework is used to run unit
tests, performance tests and UI tests in XCode. You can find learning materials
here.

G it tec h n o l og y
Git is a version control system used in the everyday work of developers. More

about VC S can be found on this link:


https://www.atlassian.com/git/tutorials/what-is-version-control

Shortly, Git is a technology that helps development teams to unite the code on
which developers work and not only. More details about Git technology and

how to work with it:

https://readwrite.com/2013/09/30/understandin g-github-a-journey-for-beginn
ers-part-1/

iOS: “I ns p irati o n ” s o u rces


R
VE Y IM PORTANT: How to search for answers

The more you will work with IOS, you will realise that one of the best abilities to
aquire is searching the web for answers. Let’s take a problem: You need to
show an error for a text field and you don’t know how. Go to Google and type:
“iOS textfield set error”.

Some of the best answers are to be found on https://stackoverflow.com.

Resources

Just remember these simple rules for searching an answer:

a. Type “iOS” (if it’s more related to sintax you can type first “swift” or
“objective c”, depending on language)

b. Type the component you encountered the problem on: controller, textfield,

image, background, task, etc.

c. State the problem: X not working, Y not showing, how to make Z

Other:

1. Official documentation

https://swift.org/documentation/

2. First app

https://developer.apple.com/library/archive/referencelibrary/GettingStarted/
DevelopiOSAppsSwift/

3. Human interfaces

https://developer.apple.com/design/human-interface-guidelines/ios/overvie
w/themes/

Articles & tutorials:

• https://www.youtube.com/channel/UCuP2vJ6kRutQBfRmdcI92mA/playlists

• https://www.youtube.com/channel/UCmJi5RdDLgzvkl3Ly0DRMlQ/videos

• https://www.youtube.com/channel/UCysEngjfeIYapEER9K8aikw

• https://www.hackingwithswift.com/articles

• https://www.raywenderlich.com/

• https://developer.apple.com/documentation/swiftui

• https://itunes.apple.com/us/course/developing-ios-11-apps-with-swift/id13
09275316

How to become a
powerful learner!

• Your attitude influences your brain's ability to process and understand


information. Give your brain a positive attitude!

• Your motivation is the fuel for your learning. Find your WHY with Simon Sinek!

• You have to focus in order to understand. Learn how to focus with Christina
Bengtsson!

• Your brain needs a certain pace to learn optimally. Give your brain 25 minutes
of learning!

• Take notes like a pro! Learn to take notes with Ed Developer!

• There are lots and lots of tricks and tips. Listen to Marty Lobdel talking about learning!

• Use Learning Games!

Learn how to build your first

iOS app.

Apply for an internship

You might also like