SwiftUI Masterclass: Build To Do List App

แชร์
ฝัง
  • เผยแพร่เมื่อ 4 ต.ค. 2024
  • In this SwiftUI masterclass, you will learn to build a full fledged iPhone app using Swift, SwiftUI, and Xcode. We will be building a functional to do list app from scratch. We'll explore the various constructs of building beautiful User Interfaces for your app. Next, we will integrate Google Firebase as a backend for the app. This backend will let the user Register and Log In to your new app.
    We'll dive into the world of saving data into a database - to do list items - and getting the users saved information. You'll get a chance to build reusable components like headers, Calendars, buttons, and more.
    Additionally, we'll get into the details of working with data in a declarative UI framework like SwiftUI. We'll leverage best practices with ViewModels, StateObjects, Bindings, and more.
    By the end of this FREE masterclass, you'll have a beautiful and functional SwiftUI iPhone app to show off to your friends.
    You can access the full project code by supporting on Patreon: iosacademy.io/...
    💻 Source Code: / iosacademy
    🎥 Subscribe for more: www.youtube.co...
    😎 Like my teaching style? Check out some of my most popular courses! courses.iosaca...
    👉🏼 Connect (personal LinkedIn) / afrazsiddiqui
    🚀 Follow on LinkedIn / ios-academy
    ** Popular Series
    Building Instagram: courses.iosaca...
    Building TikTok: / @iosacademy
    SwiftUI for Beginners: ios-academy.te...
    ** Get Skillshare free for 2 Months and learn iOS
    www.skillshare...
    ** Manage all your investments from app earnings on Betterment!
    bit.ly/3eBwlI9
    ** Grow your own TH-cam tech channel with TubeBuddy:
    www.tubebuddy....
    #swift

ความคิดเห็น • 128

  • @timbass9822
    @timbass9822 ปีที่แล้ว +43

    The Firebase integration made this course much better than other starter classes. Thank you.

  • @romanschuster1709
    @romanschuster1709 15 วันที่ผ่านมา

    Thank you so much man, you are a great teacher. Made an app for my girl's mom's birthday that impressed the ever-living cheek out of her family building on what you put together in this video. I owe you a whole case of beer bro

  • @DavesTechChannel
    @DavesTechChannel ปีที่แล้ว +21

    Great tutorial that covers the basics of MVVM, SwiftUI and Firebase.

  • @konstantin_sng
    @konstantin_sng 3 วันที่ผ่านมา

    🔥🚀 First tutorial for Xcode and i loved it. Woderful step-by-step guidance into the ios programming world. Thanks a lot! ✨

  • @nicokalkusinski9320
    @nicokalkusinski9320 ปีที่แล้ว +4

    I just finished the course and I've a working app on my computer :) Thank you so much for that. It was an amazing introduction to SwiftUI for me, I like starting big so I will pick so many things on the way and it was a perfect place for me to start. You're an incredible teacher and the pace of the course suited my learning so well. What I would recommend to do is to build upon the project they already have after following the video. I personally added "rename" feature, history of deleted items, preserved for 3 days, forgot the password feature (also comes with not being able to create a new account on the same email) and notification when the item is overdue. It's not that hard to implement after having a working base project and I hope everybody could learn something new :)

  • @debasismandal1924
    @debasismandal1924 ปีที่แล้ว +6

    Thanks a lot! Awesome content🔥
    Even though a todo list app sounds simple and basic but your tutorial is really helpful to understand the unique concepts of SwiftUI. Especially the integration with Firebase, your explanation was very intuitive on that.

    • @iOSAcademy
      @iOSAcademy  ปีที่แล้ว

      Glad it was helpful!

  • @timbass9822
    @timbass9822 ปีที่แล้ว +5

    @IOS Academy, Thank you for this great tutorial. For an retired experienced and passionate programmer, this tutorial was excellent. The best so far for a novice SwiftUI person. I did a few things differently along the way in the view-models and the views, including getting the currentUserId directly in the part where you made it a bit overly complex, but hey, that's me. Very well done and much appreciated! Looking forward to the next one from you && subscribed.

  • @First.Last.99
    @First.Last.99 2 หลายเดือนก่อน

    I enjoy so much watching this as my first tutorial. You really have great skills of presenting, thank you for sharing

  • @OhmVibe
    @OhmVibe 7 หลายเดือนก่อน +1

    Fantastic tutorial! I've been tasked by the startup I work for to build a prototype for a new Vision Pro app, and this really helped me get up to speed with X Code and Swift/SwiftUI. 🔥🚀

    • @iOSAcademy
      @iOSAcademy  7 หลายเดือนก่อน +1

      Glad it was helpful!

  • @drstarson
    @drstarson 5 วันที่ผ่านมา

    Great tutorial! Thx!

    • @jinhanli9481
      @jinhanli9481 5 วันที่ผ่านมา

      Are you done with your code?

    • @jinhanli9481
      @jinhanli9481 5 วันที่ผ่านมา

      I need some help

  • @HansenHansen-cy5gm
    @HansenHansen-cy5gm 5 หลายเดือนก่อน

    I'm so glad I stumbled upon this gem.

  • @finnalandem
    @finnalandem 5 หลายเดือนก่อน

    The padding @ 49:28 worked perfectly for me.

  • @adammarshaev3752
    @adammarshaev3752 14 วันที่ผ่านมา

    goat 🔥🚀 thanks for the tutorial!!!

  • @Zhihan-y9k
    @Zhihan-y9k 11 หลายเดือนก่อน +25

    I really appreciate how not basic this tutorial is. I am a programmer knowing at least 5 languages and know 3 of them to an advanced level. I am just looking to build myself something for fun. I want a full app with proper coding components, not an app that does nothing but dealing cards with no text field, no traditions, no nothing.

    • @redchilli450
      @redchilli450 หลายเดือนก่อน

      stop bragging, videos aren't just made to serve your needs.

  • @Terrg-nug
    @Terrg-nug หลายเดือนก่อน

    Thanks, I create three apps with your lessons 😉

    • @jinhanli9481
      @jinhanli9481 5 วันที่ผ่านมา

      Can you help me

  • @superfortekiai
    @superfortekiai 3 หลายเดือนก่อน

    Great tutorial, congratulations!

  • @clemmasterpwnzall
    @clemmasterpwnzall 9 หลายเดือนก่อน +1

    Altough this video and tutorial is great and I apreciate it to the fullest, I find it a bit quick sometimes. From a teaching perspective it would be benefitial to navigate a little slower, especiale when for example cutting parts of code and pasting them when outsourcing to a new file. I am a sw developer myself, I know how things are when you are in the "tunnel" but for people outside, especially when not used to the language and IDE, it is now always easy to follow. Still, thanks a lot for the video!

  • @kate_besel
    @kate_besel 5 หลายเดือนก่อน

    awesome so far! i just finished the first lesson in this video and i feel like i’ve already progressed in my xcode knowledge. highly recommend

  • @Septix
    @Septix ปีที่แล้ว +6

    This would be clutch as a beginner course if we just switch Firebase to SwiftData or some local db. At least that's my perspective as a mobile dev trying to pick up swift as soon as possible and not trying to get bogged down with creating a firebase account. Not sure how much that helps but some feedback :) Loving the other videos nonetheless!

    • @guiflam4854
      @guiflam4854 ปีที่แล้ว

      It’s really simple to have a local db I could help you

    • @swiftsifu
      @swiftsifu ปีที่แล้ว

      This was filmed before SwiftData was announced. No doubt they'll be a Swift Data course int he future.

  • @alistairop3098
    @alistairop3098 ปีที่แล้ว

    hey man this really works on my device! Thanks for sharing.

  • @ValentinJimeno
    @ValentinJimeno 5 หลายเดือนก่อน

    Great tutorial!

  • @nicopedra
    @nicopedra 10 หลายเดือนก่อน

    amazing video, thanks bro!

  • @jahmtk9431
    @jahmtk9431 หลายเดือนก่อน

    나도 만들어봐야겠다!

  • @meunomeecriss
    @meunomeecriss ปีที่แล้ว

    🔥🚀 Hey you! Thanks for this amazing video. I have been studying the basic of Swuift and swuifUI

  • @bennyscode5856
    @bennyscode5856 7 หลายเดือนก่อน

    great tutorial, THANKS.

    • @iOSAcademy
      @iOSAcademy  7 หลายเดือนก่อน

      You're welcome!

  • @dElectroBuddha
    @dElectroBuddha 6 หลายเดือนก่อน

    Great video, would be nice to add chapter markers for each section.

  • @moonice5941
    @moonice5941 9 หลายเดือนก่อน

    Perfect toturial

    • @iOSAcademy
      @iOSAcademy  9 หลายเดือนก่อน

      Thanks

  •  ปีที่แล้ว

    Hey there, great masterclass!

  • @7themryze638
    @7themryze638 9 หลายเดือนก่อน

    Thanks for your tutorial!

    • @iOSAcademy
      @iOSAcademy  8 หลายเดือนก่อน

      You're welcome 😊

  • @patrickschopfer4404
    @patrickschopfer4404 ปีที่แล้ว

    🔥🚀 Great Video. Thank you

  • @АлишерРизабаев-ш8ж
    @АлишерРизабаев-ш8ж ปีที่แล้ว

    Every day iOS Academy the best of the best

  • @matthewronderos7428
    @matthewronderos7428 ปีที่แล้ว

    thanks for your help.

  • @vivekdhole2675
    @vivekdhole2675 ปีที่แล้ว

    Very helpful thank you ✌

  • @borysgwia6100
    @borysgwia6100 ปีที่แล้ว

    great thank you for your effort !

  • @IgorOdaryuk
    @IgorOdaryuk ปีที่แล้ว

    Thank you!

  • @surajchand10
    @surajchand10 ปีที่แล้ว

    really helpful .

  • @sh3r1p49
    @sh3r1p49 6 หลายเดือนก่อน

    your voice reminds me of bucky from youtube also who taught me on android programming before. 😂

  • @Revan9991
    @Revan9991 ปีที่แล้ว

    🔥🚀 Much appreciated!

  • @michaelhalley-frame3328
    @michaelhalley-frame3328 2 หลายเดือนก่อน

    Thank you for the tutorial. Curious, would an app like this meet the requirements to be published in the App Store?

  • @saifahmad2243
    @saifahmad2243 หลายเดือนก่อน

    Thanks for Great Tutorial. Useful Content.

  • @evan_ry
    @evan_ry ปีที่แล้ว

    All that jazz 🤙🏻

  • @keejay98195
    @keejay98195 11 วันที่ผ่านมา

    what device are you running xcode on? your builds are so quick, on my mac air m1 it takes aaaaaages

  • @bmsrangel1
    @bmsrangel1 ปีที่แล้ว +2

    Hey! Great video! Thank you very much!
    I have a question, though. When we open the app after the user is already logged, we have the Launch Screen being displayed, then we have the Login Screen displayed for a split of a second and then we have the ToDoListView page.
    I understand why it's happening, but I wonder how to prevent this to happen. Is there a way to "delay" the launch screen transition, so this verification is first executed in background? Or is there a way to dismiss the launch screen programmatically?
    Thanks!

  • @denversupermarket7484
    @denversupermarket7484 ปีที่แล้ว +3

    View models start: 51:00

  • @fernandokhounphithach3551
    @fernandokhounphithach3551 ปีที่แล้ว

    Great video, can you update the Chat app to this latest swift?

  • @LucasAgustinLeone
    @LucasAgustinLeone 7 หลายเดือนก่อน +2

    When I add firebase package auth doesn't appear, why?

    • @camtwan1
      @camtwan1 2 หลายเดือนก่อน

      Hey, I found a solution.
      Just click not the app in the very top of the Xcode file explorer.
      Then scroll down to "Frameworks, Libraries, and Embedded Content" (in the "General" tab)
      Click the + icon
      Select FirebaseAuth
      Should work after that!

  • @Maxwellectronics
    @Maxwellectronics 2 หลายเดือนก่อน

    My app is stuck at Loading profile but otherwise good tutorial

  • @vitaliyhalai6017
    @vitaliyhalai6017 ปีที่แล้ว

    Reel reel good 👍❤

  • @aidenkamph
    @aidenkamph 11 หลายเดือนก่อน +1

    On the login screen, I am not seeing the error message when it is supposed to pop up. I have been getting "Unable to simultaneously satisfy constraints." with a bunch of NSLayoutConstraint messages and have not been able to figure it out for two days. Any help would be appreciated, thanks!

  • @annacallies1594
    @annacallies1594 2 หลายเดือนก่อน

    I can't find the part where you fix where the keyboard is covering the text field entry boxes? When I try to type using my device as a simulator, the keyboard pops up over the text fields.

  • @leftyballsac
    @leftyballsac ปีที่แล้ว +1

    brilliantly done...very helpful for me to brush up on my swift skills after some time away while also learning something new. Very clear, very simple explanations

  • @RunnerShane-nj8xz
    @RunnerShane-nj8xz 3 หลายเดือนก่อน

    How to solve the issue when the keyboard is opened then new around here view covers up the login form

  • @user-zs3kn3wf9j
    @user-zs3kn3wf9j ปีที่แล้ว

    Verifying ios-sdk while adding package is just stucked.

  • @suyogk140
    @suyogk140 2 หลายเดือนก่อน

    🔥🚀

  • @goldk3y
    @goldk3y หลายเดือนก่อน

    FirebaseFirstoreSwift isn't in the SDK. Was the name updated to something else?

    • @DvnCodes_
      @DvnCodes_ 18 วันที่ผ่านมา

      Just FirebaseCore I believe

  • @brendongong7295
    @brendongong7295 ปีที่แล้ว +1

    Stupid question: How did you pull up the terminal to view executed print statements?

    • @iOSAcademy
      @iOSAcademy  ปีที่แล้ว +1

      Cmd Shift y - totally fair question :)

  • @ignordizlaykov5193
    @ignordizlaykov5193 5 หลายเดือนก่อน

    I like it! You're beautiful!

  • @RealCPI
    @RealCPI 10 หลายเดือนก่อน

    How do you get the iphone model at the left side of the screen

  • @SwiftDeveloperWorld
    @SwiftDeveloperWorld ปีที่แล้ว +1

    What is different between StateObject and ObservableObject?

    • @bmsrangel1
      @bmsrangel1 ปีที่แล้ว +2

      I have this same question, and according to ChatGPT:
      In SwiftUI, both `@StateObject` and `@ObservedObject` are property wrappers used to manage the state of objects within a view. However, there are some differences in their behavior and usage:
      1. `@StateObject`:
      - `@StateObject` is used to declare a property that represents the state of an object owned by a particular view.
      - It creates and owns the object within the view, and the object persists as long as the view exists.
      - When the view is recreated due to a change in its parent's state, the `@StateObject` property will be initialized with a new instance of the object.
      - It is typically used for objects that are specific to a single view and should not be shared with other views.
      2. `@ObservedObject`:
      - `@ObservedObject` is used to declare a property that represents an external object that the view needs to observe for changes.
      - The object is typically created outside the view and passed in as a dependency.
      - The view doesn't own the object, but it monitors the object for changes and updates its UI accordingly.
      - When the observed object changes, the view is automatically refreshed to reflect the new state.
      - It is suitable for sharing the same object instance across multiple views.
      In summary, `@StateObject` is used for managing the state of an object owned by a view, while `@ObservedObject` is used for observing changes in an external object passed into a view.

  • @MrSem1989
    @MrSem1989 5 หลายเดือนก่อน

    I seem to have a small bug, where when I tap an item as done it duplicates, and only than I can delete the duplicate. The other item just keeps existing.
    Can you help me out some way? I double checked the code and it seems good but I am really lost on how to fix it.

  • @bernardonigbinde
    @bernardonigbinde ปีที่แล้ว

    1:42:27
    Isn't dueDate >= Date() correct? I take it we're creating items to do after now (current timestamp). Anything else would be now or in the past. Hopefully I'm thinking about this correctly.

  • @finnalandem
    @finnalandem 5 หลายเดือนก่อน

    For some reason I can't have MainView in the same folder as ToDoListApp, MainView preview works when it's in the root folder and ToDoListApp is in Other, but if I move MainView anywhere else, for instance the Views folder, it will not run the preview and gives the error "The preview provider must belong to at least one target in the current scheme in order to use previews". How can I go about resolving this and preventing it again in future projects?

  • @adnanboxwala2129
    @adnanboxwala2129 ปีที่แล้ว

    40:41
    Why does the RegisterView look fine in the Xcode preview, but is shifted slightly downwards in the simulator?

  • @ryanhofmann7644
    @ryanhofmann7644 ปีที่แล้ว

    I love this video. Just a quick question. so when do you use a "?". Example: self?.insertUserRecord(id: userId). This is at time 1:07:50 in the video.

    • @BishownathDhakal
      @BishownathDhakal ปีที่แล้ว +1

      "?" is optional value type. When the value type is nil or if we are not sure whether there is a value or nil, we have to use "?" to avoid app crash.

    • @ryanhofmann7644
      @ryanhofmann7644 ปีที่แล้ว +1

      Thank you my friend🙌🏽@@BishownathDhakal

  • @imanimansfield5456
    @imanimansfield5456 ปีที่แล้ว

    why when I add swiftui files it gives me an error? but when it's only on Content View it Works?

  • @saikrishnapatha4386
    @saikrishnapatha4386 5 หลายเดือนก่อน

    source code available for download? for reference

  • @jinhanli9481
    @jinhanli9481 5 วันที่ผ่านมา

    I need help

  • @mEtAlMaNiAc787
    @mEtAlMaNiAc787 ปีที่แล้ว

    great do you have this in more detail or do you know where I can find it. I've been trying to figure out how to sort them in date last opened, and date created?

    • @Grepsoft
      @Grepsoft ปีที่แล้ว +1

      you can provide a closure to a sort function and within that sort by however you like.

  • @turgenevslife9379
    @turgenevslife9379 ปีที่แล้ว

    I have a problem with fetching profile data, probably it's connected to Firebase rules, somebody help me pls

  • @Weiwei-h9s
    @Weiwei-h9s 7 หลายเดือนก่อน

    How to plus notification into this project?

    • @Weiwei-h9s
      @Weiwei-h9s 7 หลายเดือนก่อน

      ps I'm a Newbie

  • @emegbert
    @emegbert ปีที่แล้ว

    How would you sort the To Do list items when retrieving the data?

    • @Grepsoft
      @Grepsoft ปีที่แล้ว

      you can add a toolbar button that can then call a function to sort the todos.

  • @diegomonteagudo3560
    @diegomonteagudo3560 ปีที่แล้ว

    What do you think about Scrollview + Vstackk > list component in terms of performance? Cause I see you are using list here and I think is better to avoid use it

  • @aryanjasuja8295
    @aryanjasuja8295 10 หลายเดือนก่อน

    I am Facing some issues can someone please help me with that
    ?

  • @arhansethi12
    @arhansethi12 8 หลายเดือนก่อน

    Hey! So in firebase, I am able to see the users in authentication but they're not showing up in the live database. Let me know how to fix this! Thanks!

    • @iOSAcademy
      @iOSAcademy  8 หลายเดือนก่อน +1

      Check your db security rules

    • @arhansethi12
      @arhansethi12 8 หลายเดือนก่อน

      @@iOSAcademy that worked! thanks so much!

  • @beckschubert8746
    @beckschubert8746 ปีที่แล้ว

    I'm getting an error when trying to build app after creating the RegisterViewModel "App Delgate does not conform to UIApplicationDelegate protocol" - any thoughts how to fix?

    • @RobinAnttal
      @RobinAnttal 9 หลายเดือนก่อน

      Did you managed to fix this? can you help me with this

  • @Mooney231
    @Mooney231 4 หลายเดือนก่อน

    I really found this video useful but if you could avoid saying button in future videos, that would be great.

  • @EquipteHarry
    @EquipteHarry 8 วันที่ผ่านมา

    Miller Helen Jackson Richard Davis Cynthia

  • @progra7502
    @progra7502 8 หลายเดือนก่อน

    🤙

  • @AnishKumar-li8vy
    @AnishKumar-li8vy ปีที่แล้ว

    Can you please provide source code or github repo

    • @iOSAcademy
      @iOSAcademy  ปีที่แล้ว

      Available for iOS Academy+ members

  • @UsmanAli-r2x1c
    @UsmanAli-r2x1c 11 หลายเดือนก่อน

    hello

  • @annacallies1594
    @annacallies1594 2 หลายเดือนก่อน

    goes too fast for beginners, even on slow playback, but good app tutorial. I'm not even new to software development. I have an AS degree, and I felt like it was too hard to follow

  • @relaxstudyandsleepmusic4758
    @relaxstudyandsleepmusic4758 หลายเดือนก่อน +1

    Dear lord, SwiftUI's system text fields are horrendously ugly

  • @for-audiophiles
    @for-audiophiles 4 หลายเดือนก่อน

    You talk too fast to be understood. Please try to demonstrate slowly. Because not everyone here is a professional like you. There are lots of beginners like me who needs a foundation about basic things. They need some time to understand an idea. Give us enough time to think. So, we can move forward with you.

  • @will_hunt
    @will_hunt 10 วันที่ผ่านมา

    This is great but around 1:05:00 (and before) I feel like it starts moving so fast. It's like adding 30 letters of code every 5 seconds and only explaining 1/5 of it and is super hard to keep up with
    I do want to add though that this is awesome, thanks for making this for free!

    • @will_hunt
      @will_hunt 9 วันที่ผ่านมา

      Also around 1:29:00, maybe I'm too entry level, but it is confusing when you added all the userId stuff without explaining

    • @jinhanli9481
      @jinhanli9481 5 วันที่ผ่านมา

      @@will_huntare you done with your project I may need some help

  • @victorriurean
    @victorriurean ปีที่แล้ว

  • @Pd14_1
    @Pd14_1 20 วันที่ผ่านมา

    I got an error (Argument passed to call that takes no arguments) in this code:
    private func insertUserRecord(id: String) {
    let newUser = User(id: id,
    name: name,
    email: email,
    joined: Date().timeIntervalSince1970)
    time in video 1:09:35
    Please hep me fix

  • @TazeBalbosa
    @TazeBalbosa 5 หลายเดือนก่อน

    🔥

  • @rizkysiregar
    @rizkysiregar 6 หลายเดือนก่อน

    Thanks bro, @afrazsiddiqui

  • @sijanpoudel1329
    @sijanpoudel1329 7 หลายเดือนก่อน

    after adding firebase packages , preview is not working .

  • @ryanhofmann7644
    @ryanhofmann7644 ปีที่แล้ว

    🔥🚀