I’ve been doing iOS development for almost two years now, but mostly using Objective C, which is the current standard of development in iOS. Apple recently released Swift, a new programming language, and since then adoption has been growing at a fast pace. People mostly like it because its syntax is much simpler and friendlier (a.k.a. more “Ruby-like”), and it has more powerful language constructs. Of course, it has had its fair share of issues; there have been a number of problems with it since launch, ranging from compilation slowness to general bugginess.
That said, it’s the future of software development for Apple, so if you want to build for their platform, you’ll need to learn it eventually. Even if it’s not your main development language, if you’re an iOS developer you should invest some time to understand it. Over time, Apple will fix a lot of its issues, and things will get better. Also, because it’s a brand new language, by learning it you have a chance to be among the first experts in Swift — this can really level the playing field against all those Objective C developers out there who have been doing it for decades.
So, I thought I’d throw together this post with a quick set of links of what I’ve used to learn it so far. These are by no means the only resources, or the best necessarily, they’re just what I’ve used personally with success. I found that they were sufficient to give me a strong understand of Swift as a language, and more importantly to understand some of the more complex parts of Swift. If I were to summarize my findings thus far, I would say this:
Swift is less verbose than Objective C, which means that its code looks shorter and simpler. However, as a result of that, it is more complex — in order to understand what a particular line of code is doing, you need to do more work. In addition, the language has more powerful constructs, and so you get the benefit (and problem) of having more than one way of achieving a given task.
I should mention that I already know Objective C and iOS, and so my learning efforts were mostly focused on learning Swift coming from Objective C (this is also a great article on making the transition). I didn’t need to learn iOS at the same time (which is a more complex undertaking). Below are some resources focused on just learning Swift, followed by some other resources (that I haven’t tried) which might help you learn iOS alongside Swift.
This book was released by Apple at the launch of Swift, and has been updated regularly since then. It’s quite extensive, so it’s not something you can go through in an hour. If nothing else, it will give you a rough sense of how many different parts there are to Swift, and you’ll likely need to come back to it and/or go over it a few times to really grasp some of the concepts.
This book, by Daniel Steinberg, is a very hands-on exercise-driven resource. You do not read this book, you do it by completing the exercises it provides. It’s quite straightforward, and will do a great job of walking you through all of the language’s nuances, limitations and possibilities. It’s also something you can complete in a couple of days if you spent a few hours on it each day.
Learning iOS (with Swift)
This book is still in development, but seems to offer a lot more on top of tips and tricks for Swift development with iOS8. In particular, it mentions tips on how to promote your app in the App Store, which is definitely one of the hardest parts of iOS development. Lots of people build great apps that no one ever hears about because getting awareness and traffic to your app is extremely challenging. Worth a look.
This book is written by Jack Watson-Hamblin, and he’s an excellent teacher and lecturer. He has built tons of excellent screencasts on RubyMotion (a framework that lets you write iOS apps using the Ruby programming language) and so I am pretty confident that this book will be a great resource.
While the resources above are quite comprehensive, some of us like to learn in small pieces, through things like screencasts and blog posts. Here are two resources I really like in that regard:
This is a site that hosts excellent screencasts on Swift, on a range of topics from simple to advanced. They’re a good place to subscribe to. In addition, if you’re a Slack user, apply to join their Swift channel — it’s a great way to join a community of Swift developers to help answer questions you might have as you go through (this channel may well be the best resources of all IMO).
This site is focused on Realm, a simple database caching solution for Swift, but they are a great company and host many wonderful talks at their meetups. Some of the videos here are the best knowledge around on Swift.
This email newsletter hosted by Natasha is a great way to keep up with all the latest libraries, changes, and updates to the Swift language.
I hope these resources are helpful in getting you started with Swift. While I agree it’s a tough language to work with today, things are improving quickly, and the community seems to be growing along with it. We are seeing many of the Ruby developers start using it, and they’re bringing some of their best practices along (open source libraries, strong testing frameworks, etc.). The future of Swift looks bright indeed!