Swift and iOS from scratch: coding like a pro 3
4.9 (8 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
150 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Swift and iOS from scratch: coding like a pro 3 to your Wishlist.

Add to Wishlist

Swift and iOS from scratch: coding like a pro 3

iOS App Development - long press, alerts, closures, DAO, SRP, DRY, learn how to code like a professional.
4.9 (8 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
150 students enrolled
Last updated 12/2014
Current price: $10 Original price: $30 Discount: 67% off
1 day left at this price!
30-Day Money-Back Guarantee
  • 2 hours on-demand video
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • Continue your iOS app
  • Code like a professional, know your language and API
  • Use design patterns
  • Identify code smells
  • Use good practices
  • Understand long press gesture, alert controllers, encapsulation, optional chaining, if let, DRY, default parameters, extract class, extract method, closures, serialization, NSCoding, SRP, DAO
View Curriculum
  • Download XCode
  • Know how to program in any other programming language
  • NO NO NO NO NO need of objective C knowledge

A course for developers who want to create their iOS applications using good practices, while avoiding some traditional code smells.

For first time iOS developers, this course will guide you through several parts of the the language and the API, how and why to use them properly. Avoid common iOS and developers mistakes while building a real world application. The number of applications is not the goal here: a good, well written app is what we are looking for.

In this course you will learn the basics that will allow you to understand what you are building: how and why. You don't really know something until you learn why.

If you already develop for iOS, but are tired of developing applications that are costly to mantain, tired of writing code noone else understands, or even the simplest change requires too much energy, this course will fit your needs: learn how to avoid those mistakes using features both from the language and the API.

You will learn Swift, the iOS API, good practices, design patterns and code smells. You will not just learn how to use, but understand what and why you are using it. As a newcomer, learn how to use the long press gesture, show modal alert controllers, use encapsulation, when and how to use optional chaining, if let, the DRY and SRP principles, default parameters, the extract class and method refactorings, use closures, understand the serialization process, the NSCoding type, and the DAO pattern.

Understanding what is going on is the difference between a language and API user and a professional programmer. This is our goal, let's understand Swift and iOS development.

Who is the target audience?
  • This course is meant for new iOS developers who want to learn how to write apps using good practices
  • Developers who took the secound course should continue with this one. You will continue developing the project you finished on the first course
  • This course is meant for swift developers who do not have experience on good practices, design patterns or code smells.
  • This course is NOT meant for developers who want to write bad code that is hard to maintain on the long term. There will be no global vars or similar shortcuts for bad programming.
Students Who Viewed This Course Also Viewed
Curriculum For This Course
Expand All 38 Lectures Collapse All 38 Lectures 01:47:56
4 Lectures 08:54
Creating an UIAlertController

Adding UIAlertActions

Encapsulating behavior

Summing up: alerts and caring about encapsulation
Optional: good or bad?
9 Lectures 18:09
Smelly :( or good practice :) Optionals usage

Code smell: "Optional!" is as dangerous as it gets

Optional Chaining

Bug: infinitely losing money

Code smell: "Optional?Chaining" is as dangerous as it gets

I don't wan't to be the bad guy, do you?

The optionals rule: avoid defining, use if let as much as possible

Good practice: optionals, if let and alerts messages

Summing up: avoiding optionals, showing meaningful error messages
Even more good practices and questioning
8 Lectures 15:42
Dont repeat yourself (DRY)

Good practice: refactor extract method/class

Default parameters

Invoking the refactored method

Code smell: if/else/elses and switch are nasty boys

Refactor: isolating nasty code

Good practice: thinking after coding, should we refactor further?

Summing up: avoiding copy and paste mess and simple refactor power
Functions, methods or closures?
8 Lectures 22:17
ActionStyles: Cancel or Destructive?

Functional programming intro: passing functions as arguments

Code smell: Using properties as global variables

Vanilla functions: it is just a function

Updating the data source and redrawing the table

Defining a closure and passing it as an argument

Receiving closures as a parameter

Summing up: Spaguetti Code, and Closures
Serialization: saving data to the file system
4 Lectures 23:24
Serializing with NSCoding and writing to the file system

Locating the file in our simulator file system

Saving the files, copy and pasting code :(

Summing up: saving to disk and serialization
Single Responsibility Principle and Data Access Object (DAO)
2 Lectures 08:48
Single Responsibility Principle (SRP) and Data Access Object (DAO)

Thinking out loud: method naming (aka items items item, meals meals meal)
About the Instructor
Guilherme Silveira
4.2 Average rating
118 Reviews
3,357 Students
4 Courses
Software development educator at Alura

As a software developer I was tired of "language tutorials" and "bad practices courses". What about you? I want my students to finish a course and become capable of judging what is good and bad for their software, both on the short and long run. They should understand what they are doing, not just make use, but own their language and tools.

I have worked as a software development educator for the past 12 years, with experience in several countries, programming languages and environments. Learning how to program should be done as we learn things in real life: with real examples and a parental guide on what is good and what is bad for us.

My mobile experience started with Java ME in the early 2000's, went through Android and I have finally reached iOS development when Swift was first announced. I was given the task to write our company's main product iOS version using Swift and that experience together with many other language and API experiences can be seen in my courses.

I have closely worked with several user groups and communities in Brazil, where I was lucky to be invited to give talks at many conferences, including QCon, AgileBrazil etc. I am also the co-organizer of a well-known brazilian mobile development conference, MobileConf.

I am the cofounder of the biggest Brazilian web site on software development questions and answers, GUJ, creator of VRaptor, a java community expert on some JSRs and cofounder of Brazilian's tech book publishing company Casa do Código.

You can find more information about my career at my linkedin page.

Finally, as a personal note, I am a language lover, feel free to find me at twitter and chat in portuguese, korean, english, french or german, or follow my korean weekly blog.