If I have one month to learn iOS, how would I spend it?
Exactly one year ago, I had been working as an Android developer. At that time, I did not have any knowledge about iOS programming, even I had never used any Apple products. It, however, was in the past, I have been developing both iOS and Android apps in parallel.
Today, after looking back, I want to share the syllabus of the iOS programming course that I created by myself for one-month studying.
In my personal experience, I really recommend that Android developers learn to develop iOS apps. It sounds weird but doesn’t get me wrong. There is a reason: Expanding your knowledge widely helps you to go deeper into your field.
“If you do something and it turns out pretty good, then you should go do something else wonderful, not dwell on it for too long. Just figure out what’s next.” — Steve Jobs
Coming back to the main topic, I started by writing my own schedule for one month, and of course, every resource was completely free.
Get started with Swift
You can learn Objective-C instead but I really recommend that you go with Swift. It is friendly and easy to learn.
Apple official resource is the first place I visited. Read through basic concepts and get your hand dirty by coding them along on Xcode.
Besides, you can try the Swift-learning course on Udacity. Although the website said that it will take about 3 weeks, but you can complete it in several days (several hours/days).
In my case, I spent one week learning Swift. So, if you have time, there are several following resources you can explore:
Draw your app interface with UIKit
Let’s move to a visual and interesting part. UIKit helps your work to be seen and interacted on iOS devices. It sounds good, doesn’t it?
In my case, I went to search for a free course on Udacity. Fortunately, I found it. UIKit Fundamental Course
At first, iOS Auto Layout was quite strange to me. The reason was that when developing Android apps, I used to implement its interface via layout XML files and saw the result visually, almost never used drag-and-drop features. iOS, however, is totally different.
After spending a while on practicing to understand the Auto Layout mechanism, it was pretty awesome that I learned something else beyond the usual Android design style.
Besides, in Xcode, you can make a transition between screens by just using dragging their connection in Storyboard, while Android requires some lines of code.
There are various features that you can explore.
Furthermore, you can check out more iOS UIKit tutorials in the “Core Concepts” section of iOS Raywenderlich page.
Understand iOS data persistence
At the time you become familiar with UIKit, you can display data to users and retrieve data from them. It is great.
The next move is to store data that users can get them back even the app is closed. What I mean here is to keep data in the user’s device hard drive but not in a remote server.
In iOS apps, you have several options:
- NSUserDefaults : is a key-pair type that is similar to SharePreferences in Android)
- NSCoding / NSKeyedArchiver : serializes compliant classes to and from a data representation and stores it in File System or via NSUserDefaults
- Core Data : is iOS super-powerful framework
- Others: SQLite, Realm, and etc.
Now many iOS developers prefer Realm over Core Data but I recommend learning Core Data because it is the iOS official persistent framework and when you understand its core structure and implementation, you can move the mountain.
The resources that I went through includes:
- iOS Data Persistence and Core Data by Udacity
- Some Core Data tutorials on Youtube
- NSCoding/NSKeyedArchiver article by Mattt Thompson
Get in touch with the outside world via iOS networking
We are living in the internet era, so your app should connect with the outside world and exchange information with others. Let’s move to the next lesson: iOS networking. You learn to work with REST API in iOS. It is an important thing to remember that you should not use any third-party libraries at the moment. Let’s complete this lesson in iOS built-in frameworks.
In the future, you have a lot of chances to work with cool HTTP networking libraries like Alamofire, but we are learning now. Going with basic and official things before swimming into others.
Recommended courses and tutorials:
- NSURL Protocol tutorial by Raywenderlich
- NSURL Session tutorial by Raywenderlich
- Fundamental Networking course by Udacity
Build your first awesome app
“Knowing is not enough. Let’s apply”. — Leonardo da Vinci
You have many tools in your hand after following your iOS self-studying journey. You can program in Swift, sketch iOS app interface by using Storyboard and UIKit, persist data on device’s storage, and exchange information with the world via the internet by using iOS Networking.
You are awesome, man. Let’s build whatever you want.
We are developers who make cool and valuable stuff to make our tough world easier. So, you can try to build an iOS app that improves your daily work, help your little brother, or even solve a global problem. Finally, I recommend that you publish it on the Apple store. It helps you feel good and keep going on.
3 years ago, I published my first Android app (a note-taking app) on Google Play after learning Android for 1 month. 1 year ago, I also published my first iOS app (a weather app) on Apple Store after 1-month self-studying. They were both simple stupid at first, but they kept me being motivated and improving day by day.
You are better and I bet on it. So, let’s create something and show it to the world.
Note: There are many good resources out there, you can pick them up by searching Google. The tutorials and courses above are just my favorite selection.