The right book to start learning iOS development with swift? iOS Apprentice vs. Swift Apprentice or a combination with online tutorials?

Hey guys,

thanks for creating this amazing resource of absolutely stunning tutorials!

I am an absolute beginner in developing and programming. I have experience in HTML, CSS as well as small experience in JavaScript and PHP. Therefore I have a general understanding of OOP but definitely nothing in depth.

I am most interested in learning Swift and especially developing for iOS / the iOS-Frameworks and not sure how to start best. I have already seen a lot of (good) video tutorials on Udemy and read some books about Swift and iOS-Frameworks / iOS programming but at some point I always got stuck because it was explained too fast or not enough in depth to understand the topic - I have always had the feeling that most tutorials are more for intermediate programmers with some experience in other programing language.

Now I really want to try your tutorials because I think you are one of the most reliable and best resources for iOS programming. Fortunately I have already bought the iOS Apprentice and I’m very satisfied with this book, nonetheless I get stuck from time to time (for example in chapter 2 where you explain the table view fundamentals - I always have the feeling that I don’t unterstand the whole part and it’s for sure a problem of my way of learning). Now I consider if it probably is a good way starting with the Swift Apprentice instead of the iOS Apprentice or may I go with the online video subscription alongside with the book (so that I work parallel with the iOS Apprentice and the online tutorials).

As you can see I am not sure what the best way is in my case and I would like to ask you as you are the pro, maybe you have a suggestion how to start learning?! :slight_smile:

Another question: Does it make sense start learning Swift 3 and iOS 10 while iOS 11 and Swift 4 are already in the pipeline? Even if the new X Code version will be more backward compatible to Swift 3 than former versions were? Or should I wait for the new version before start learning iOS / Swift?

Thanks in advance for helping and best regards!

@thalion Thank you so much for reaching out to us! Every journey begins with a single step and we’re very excited that you’ve decided to learn iOS development. We’re honoured that you chose us as your vehicle to take you there! :slight_smile:

The best analogy that I can give you about this journey is this:

Think of yourself as an aspiring author for the next great novel in French (assuming you don’t know French :wink: ). Before learning how to write a novel, you’d first need to have a strong grasp of the language. Once you have a strong foundation of the language, you can then learn how to write (since knowledge of the language itself is not enough to know how to write a novel in ANY language).

As you’ve correctly pointed out, yes, learning Swift would be your starting point, and yes, I would definitely recommend subscribing to the video tutorials (no bias…honest! I know some of the presenters in the videos personally and I definitely can vouch for their knowledge and character :slight_smile: ). The benefit of the videos is that they provide an explanation from the ground up on the subject you are learning, and of course, with almost every lesson, there is accompanying source code as well as a challenge to help you apply the knowledge that you’ve received from that particular video.

Since you’re a beginner, I will try to help you out by concentrating on a few areas:

1.Swift 3

Swift 3 is most definitely relevant, and now the language is slowly maturing, and settling down now. The jump from Swift 2.2 to 3 was significant, but the jump from 3 to 4 is nowhere close to that, so you’re pretty safe with learning Swift 3. :slight_smile: Please do note, that while Swift can be used as an Object Oriented language, it’s real power lies when it is is used as a FUNCTIONAL language. Functional programming is different from OOP, and RayWenderlich.com does have tutorials that discuss this topic.

2.UITableViews.

I can’t stress this enough, but UITableViews MUST be something you know inside out. And backwards. UITableViews are the foundation of almost every app, and because they incorporate so many areas of iOS development, you will many concepts that will overlap with other areas of iOS development. Make sure you learn how to use storyboards, .xib files, and of course, doing everything programmatically. Once you know how UITableViews work, it will be very straight forward to learn other, more complex concepts like UICollectionViews.

3.Auto Layout

If you’re going to build apps, you’re going to need to make sure your UI looks good, and appears consistent across all devices. This will not be possible without knowing Auto Layout, it’s that simple. This is a fundamental technology like UITableViews that you simply cannot ignore. Grab the bull by the horns. Please.

4.Networking (NSURLSession)

Very few apps today are islands (i.e. standalone apps that don’t require any external data). As devices evolve, and as apps become more and more complex, many elements of app development are moved out of the device and into the cloud. This means that your app will need to know how to communicate to a web service of some kind. Typically, this will be a REST API which will send data to you in JSON format (although other forms are indeed available, JSON is the most common). Therefore, you should definitely get a good understanding of how to communicate to an external resource on the web, and then process that data so that it can be used inside your app. The specific API in iOS to know this is NSURLSession. Yes, we have tutorials on this.

5.Multithreading (Grand Central Dispatch & Operations)

One of the more advanced concepts in iOS development that you definitely should know as your knowledge of iOS increases is multithreading. This concept allows you to run multiple tasks simultaneously on your device, while making sure that your user is constantly engaged with your app. Having a good understanding of this concept will allow you to efficiently use your iOS device’s resources, while at the same time providing a great experience for the user. We have a course dedicated to this also!

I think that is about it for now. There are many other “nice to know” areas as well (e.g. Core Data), but I think you have your hands full for the next while :slight_smile: Definitely do check the forums to see what others are asking about, and of course feel free to post your own questions. We’re here to help! As an experienced iOS developer, I will say to you in all honesty that when I first got started in my learning of iOS, RayWenderlich.com was indeed one of the very first (and dare I say, the best) starting points on the web, so you’ve come to the right place!

Please feel free to post questions or comments that you may have, and we’ll do our best to answer them for you!

Happy learning, and take care! :slight_smile:

1 Like

Hey Fayazzuddin,

thanks a lot for helping me by answering my questions in depth and thanks to the time you took for writing!
I am glad to see that there are people like you outside who help beginners with such great explanations and with a grasp of their problems. Thank you a lot! :slight_smile:

You pointed it out and so I think the best way for me to start is buying the Swift Apprentice book and after working through it I’ll subscribe the videos and work with them and the iOS Apprentice side by side for getting a better understanding of everything. I think this is very helpful when thinking about topics like UITableView or Auto Layout, like you already mentioned!

Thank you for pointing out the importance of Networking as well as of Multithreading. Especially Networking is a topic I like to think about because in my mind I would like to develop apps that are accessible via a web app as well as via an iPhone app. Altogether you mentioned a lot of great and interesting topics that seem to be very important for developing and learning iOS and all its frameworks. I am very thankful about it, so I will have my eyes on these topics while learning with the Swift and iOS Apprentice as well as the videos :slight_smile: At first I am pretty sure that I will get stuck with the UITableView and Auto Layout :smiley:

As you correctly pointed out I’ll have my hands full for the next while and the best way starting is with the Swift book, so topics like the one mentioned above will take some while because haste makes waste! I definitely will ask a lot questions and comment because I am pretty sure that I will have a lot of questions while learning with your books!

Before I start working and learning with the Swift Apprentice: You said Swift is more a functional language and very good in being one. As someone who has less experience in other languages and a rudimentary understanding of OOP would you recommend to start learning Objective-C to gain a basic understanding of certain topics? Or shall I directly start learning Swift? As I know and see in the iOS Apprentice, which I already own, I’ll get the older versions of the book, too. So I would be able to learn Objective-C first but like I said I am not sure if it makes a lot of sense, even if outside is still a lot of good Objective-C code.

Thanks again for your time and helping me! Like I said at the beginning, it is great to see that there a people who help beginners with such a dedication! Nowadays unfortunately this is not standard and so I am very thankful about your great help!

Best regards!

Hi @thalion and thanks very much for your kind words. It really is no trouble because honestly, I was in your position not long ago. :slight_smile:

That being said, I honestly would advise focusing on Swift for now. Objective-C is still relevant, but Apple has shifted it’s focus on Swift, and most, if not all tutorial sites on the web (including ours) use Swift exclusively to teach. Down the road, you can, if you have time, perhaps pick up Objective-C (and in all fairness, it’s not going anywhere). Focus on Swift, and then apply your skills by building apps, and from learning iOS concepts like UITableViews for starters :slight_smile:

Thanks very much for reaching out to us, and I’m very happy that you found my advice useful. Please feel free to post any questions or comments in the future!

Take care.

1 Like

@syedfa : Thanks again for helping and giving tips! That sounds like a great way to start! So I’ll buy the iOS Apprentice and start learning Swift before starting with the iOS Fundamentals. Be sure I will question a lot :smiley:

Thanks again for your helping me and see you in the future :slight_smile: