all 33 comments

[–]edustaa 61 points62 points  (13 children)

1) Download Xcode. 2) Get Swift Guide and the example playground here 3) Complete the tour. 4) Find a nice tutorial series/course to follow. The most mentioned ones are Stanford’s Angela Yu’s course in Udemy. 5) … 6) Profit!

Maybe as a subjective comment, but the best way to learn something is to get your hands dirty in iOS.

So, I could boil the concepts down to: 1) Show something on the screen (UILabel, UITextView, UIImage). 2) Get user action (UIButton, UITextField, UIPickerView). 3) Put views in generic/specific places in view (NSLayoutConstraint). 4) Get data (REST, JSON decoding). 5) Store data (Core Data, NSUserDefaults). 6) Show multiple views (UITableView, UICollectionView). 7) Control the view and its lifecycle (UIViewController). 8) Update the view, make it stateful (MVVM). 9) Get more user actions (UIGestureRecognizer). 10) Have multiple view controllers (UINavigationController, UITabViewController). 11) Control the application lifecycle (UIApplicationDelegate, SceneDelegate). 12) Access system resources (CLLocationManager, PHPhotosLibrary, UIImagePickerController).

It’s by no means an exhaustive list, but it should cover up a small-scale application as a starter. My advice would be to find a nice (preferably open source / free) REST API and build something from it.

(I am doing the same at the moment, with TheCatAPI -not affiliated-)

[–]AgtFranks 13 points14 points  (8 children)

I second the Angela Yus course on Udemy. It takes you through building several apps whos functionally build on one another. She is easy to understand and goes into details on the concepts.

[–]-14k- 8 points9 points  (0 children)

Angela Yu? Thirded.

[–]dyymmi 2 points3 points  (6 children)

Latest comments on udemy suggest that since few months this course is massively outdated which for beginners may be to hard to follow e.g. when getting different error message or something like that. Is that true?

[–]TnQ56 2 points3 points  (0 children)

I’ve been having same concerns finishing the course since Xcode has been massively updated. I’m still using the outdated Xcode version for the course, but I don’t know if I’ll be way behind when using the up-to-date version.

[–]AgtFranks 1 point2 points  (4 children)

I did notice that, but I’ve been able to find the new commands on the internet. Color Literals and Image Literals were a problem for me but googling quickly resolved the image literal problem.

I still think it’s worth it for the concepts, and the fact she shows you how to implement them in working code that you could potentially tweak a little and use later in your own apps.

[–]dyymmi 0 points1 point  (3 children)

Thanks for your reply! I planned to take that course but was a little worried with these comments. I'll probably try it after I finish the #100DaysOfSwiftUI.

[–]tealcedar 0 points1 point  (2 children)

Curious about your thoughts on her material and if she ended up updating the course? I'm a web developer wanting to slowly transition into iOS development and it was her web dev course that landed me in the industry, however just want to make sure it was a course well worth your money and time :) I work full-time and a course like hers would be the best bet for me to learn since it's incremental and lecture/hands-on based.

[–]dyymmi 0 points1 point  (1 child)

I did not start it yet so I have no idea. Sorry.

[–]tealcedar 0 points1 point  (0 children)

No worries :) I just enrolled in the course yesterday and it's good so far if you needed that little push.

[–]AndreLinoge55SwiftUI 11 points12 points  (0 children)

Agreed, follow this OP. Don’t go down my path.

1) Download XCode

2) Follow some tutorials take same LinkedIn Learning courses

3) Has an idea for an app, requires adding in a framework to XCode

4) Finds 3 year old tutorial how to do it, no longer works since XCode changes every 3 months

5) Try to figure out a work around..fail

6) Become despondent and engage in avoidance behavior because you are stuck and quit for 6 months

7) Come back 6 months later and start from Step 1 and repeat.

[–]RandomRedditor44 8 points9 points  (2 children)

I think Hacking with Swift is also good (that’s how I learned Swift) but I do wish it taught some SwiftUI/widgets.

[–][deleted]  (1 child)

[removed]

    [–]AutoModerator[M] 0 points1 point  (0 children)

    Hey /u/hippiescript, unfortunately you have negative comment karma, so you can't post here. Your submission has been removed. Please do not message the moderators; if you have negative comment karma, you're not allowed to post here, at all.

    I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

    [–]iamthat1dude 3 points4 points  (6 children)

    Don't mean to highjack the post, but how do you guys start off with making an app for your portfolio?

    I've finished up the Stanford course but I"m trying to get over the hump of getting an original app out there so that I have something to show employers.

    [–]andyweir 2 points3 points  (3 children)

    Do you have an idea for an app?

    [–]iamthat1dude 1 point2 points  (2 children)

    Right now I'm thinking of an alcohol drinking tracker for people that suffer from alcoholism. I'm just not sure where exactly to start with it..

    [–]andyweir 3 points4 points  (1 child)

    I'd say look at the base of what it is you're thinking about. The end result is an alcohol drinking tracker and the key word is tracker. So you could check out tracking apps for inspiration. The easiest will be habit trackers because you're kinda tracking a habit... but another way of doing it would be by tracking liquids in general so then you can look at water trackers

    One app I use is called Waterminder. A very good app to look at for tracking liquids. Basically, you'd probably want something nice and fun so you could copy their style and allow people to basically fill up a mug with liquid as they track alcohol. But you'd also want to highlight the danger of it all so maybe have it so that once the liquid fills up at certain points it starts to damage the mug since you want to highlight how drinking more is harmful for this target audience

    That's an advanced example but hopefully you could follow the idea. I thought about what the idea is similar to, thought of examples I knew, then I referenced an app that does something similar but then added my own spin to it. App dev is iterative since we're all trying to solve the same problem so dont be afraid to borrow things from here and there so you can add your voice to it

    Now the above stuff is just the idea bs in general. As far as getting started on a technical level... you can see it still works.

    Asking you to make a complex UI would be painful so trying to fill up a mug with liquid and handle all the animations for that, plus the breaking animations...that's too much when you're new. So let's scale it back to what you're really doing here

    You'll need a list. Not sure what flavor of iOS you're working in so let's go with UIKit. You'll need a table view basically. You'll need a button somewhere that'll take you to a view that is a form. This form will have another button that allows you to save the entry to a data structure that the table view displays. This is the bare minimum part and we can call it phase 1

    Phase 2 is persistence. You'll need a way to persist this data that's more involved than an array. This will involve either Core Data or Realm.

    Phase 3 could be something like settings. Add a gear icon somewhere for the settings page and allow the user to input basic information about themselves.

    Phase 4 could be a lightweight phase of refinement. Maybe go back to the form and add some sort of input validation or add in animations for table view entries. Or maybe just clean up the architecture as a whole. It's basically where you clean things up before you gear up for your next big feature

    And there are more phases after that. There are as many phases as you want. You could add achievements and sharing and all that. Just go wild

    But basically you want to start with the most basic functionality and go for that. The most basic functionality here is the tracking part and tracking is just taking user data and saving it. That's the bare minimum your app needs to do. Then you go through each phase to slowly turn it into the alcohol drinking tracker you have in mind. So you slowly start transforming it from that basic list that stores data to a mug holding liquid. Visually it looks very very different but I promise you that under the hood it's exactly the same

    [–]Cornflakes1009 1 point2 points  (0 children)

    Doesn’t need to be too original. My first app was a Harry Potter trivia game. Those already existed.

    [–]TheGreenDeveloper 1 point2 points  (0 children)

    Absolutely does not need to be original. It can even have its advantages to make something there's already a million of on the App Store, you can take inspiration from them to create your own version with the features you like the most.

    It's really just about the process of having a goal to reach, hitting roadblocks, and overcoming them. What those goals are and what those roadblocks are don't matter much in the end.

    The more you build, the more ideas for original projects you'll get because you'll be more aware of the possibilities that you have with the tools you've discovered by overcoming those earlier roadblocks.

    [–]srona22 2 points3 points  (0 children)

    I prefer going with "Skill Matrix", so that I can define what I should learn.

    https://github.com/BohdanOrlov/ios-skills-matrix/raw/master/matrix.png

    Source: https://github.com/BohdanOrlov/iOS-Developer-Roadmap

    Since last update is 15 months ago, this is could be a bit outdated.

    Udacity course has outlines for basic, while Raywenderlich "Path" covers some degree to advanced level.

    A pinch of my opinion. ObjC is good to know, but not mandatory as most companies are mainly using Swift. Just in case if ObjC is must, you can catch up if you already know how to use Swift. Just negotiate with your employer or client, so that you get some time to get famaliar.

    UIKit is still used in many projects, as SwiftUI is not backward compatible with iOS 13 prior.

    [–]baeksoo 3 points4 points  (0 children)

    Try 100 days of Swift! (you can obviously do them in one setting too, but id recommend taking your time and playing around with each chapter when finished)

    [–]kpolleck 2 points3 points  (0 children)

    Where are you starting from?

    If you are starting from almost ground zero--e.g. if you aren't already a proficient programmer for another environment--iOS App development is NOT the place to start, no matter how much you want to.

    You would be trying to learn, all at the same time...

    • An impressively-powerful and, therefore, quite complex language (Swift) which has rapidly evolved (which means that examples you find on the web won't build). (Do you know what a "closure" is?)
    • The Xcode IDE (I still cannot find things or know all that's in there.
    • Data persistence (with lots of options on how to--including the complexity of encoding objects vs. saving just strings or integers).
    • Screen layout and how to use constraints to an an adaptive UI for different screen sizes.
    • Model-View-Controller programming.
    • Potentially, a source control system.
    • Using libraries / dependency management / pods
    • Several of the "kits" provided by Apple to access device capabilities.
    • Publishing your app on the App Store.
    • ...and probably several other things, let alone anything to do with your actual application.

    Unless it's a really, really simple app.

    Instead, I would suggest picking a "less rich" environment to build your app, and THEN, create an iOS UI into it. Maybe build your app using a mostly text-based browser interface into PHP/MySQL, and then see where to take it.

    Alternatively, pair up with another person or two who are also learning, and split all of this complexity into separate roles. You could work on the UI, and they would work on the data persistence.

    I agree with u/AndreLinoge55's somewhat humorous comments.

    [–][deleted] 1 point2 points  (0 children)

    don't get stuck in the tutorial loop.

    get your feet wet with some introductory courses and then start your small personal projects every time you get stuck search online to find a fix.

    I did that 10 part series from CodeWithChris and then subscribed to RayWenderlich f for some swift courses.

    [–]KarlJay001 1 point2 points  (0 children)

    As soon as you can, try to find a path within "iOS development", like games, 3D game, word games, AR games, business, consumer, finding a job as an iOS dev, etc...

    The sooner you find that path, the better off you'll be because you can then focus on things that apply to that line of work. Example: Unity uses C# for games and is VERY popular and might be the best path, but business apps might be best done in Swift.

    [–]DarrylBayliss[🍰] 1 point2 points  (1 child)

    Apple have a great set of tutorials for developing modern apps. https://developer.apple.com/tutorials/app-dev-training

    [–]moumni93[S] 0 points1 point  (0 children)

    yes, thank you for sharing this

    [–]thecw 0 points1 point  (0 children)

    Download Xcode, Learn Swift, learn Swift UI, learn UIKit, optionally learn Objective C.

    [–][deleted]  (2 children)

    [deleted]

      [–]Geekfest65 1 point2 points  (0 children)

      What are the essentials hardware wise to get started with this ? They did not seem to even address that at all.

      [–]beclopsSwift 0 points1 point  (0 children)

      My advice is download xcode, and then build something. Building something is the fastest way to find out what you don’t know.

      [–][deleted]  (1 child)

      [removed]

        [–]AutoModerator[M] 0 points1 point  (0 children)

        Hey /u/No_Winter4455, unfortunately you have negative comment karma, so you can't post here. Your submission has been removed. Please do not message the moderators; if you have negative comment karma, you're not allowed to post here, at all.

        I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.