SwiftUI Tutorial: What's the difference between @State, @ObjectBinding, and @EnvironmentObject?

Поделиться
HTML-код
  • Опубликовано: 16 ноя 2024

Комментарии • 238

  • @twostraws
    @twostraws  4 года назад +9

    Watch next: How to fix slow List updates in SwiftUI - ruclips.net/video/h0SgafWwoh8/видео.html
    Questions? Comments? Tweet me @twostraws.

  • @simonbachmann2120
    @simonbachmann2120 5 лет назад +269

    IMPORTANT: ObjectBinding/BindableObject are deprecated now! @ObjectBinding is become @ObservedObject and BindableObject protocol is become ObservableObject as well as willChange become objectWillChange.

    • @niklasnickel
      @niklasnickel 5 лет назад +3

      Simon Bachmann Thank you so much! This indeed saved a lot of trouble...

    • @sreekumarmenon
      @sreekumarmenon 4 года назад

      Was going to ask the same, I started swiftui recently and was confused with seeing ObjectBinding in this video! thanks

    • @MattiaRighetti
      @MattiaRighetti 4 года назад +1

      I was going to ask when to use ObservableObject and BindableObject, thanks! 😊

    • @flexmcpee
      @flexmcpee 4 года назад

      Ah that makes sense. Only started learning SwiftUI of late and was confused seeing those. Thanks for clearing up.

    • @LazarofShalev
      @LazarofShalev 4 года назад

      thank you 👌

  • @abcd123906
    @abcd123906 3 года назад +34

    If you are learning SwiftUI, you literally NEEEEED to watch this video! This scratched so many cognitive "itches" I had about Swift, it's almost scary. Thank you, thank you, thank you!

  • @frimpongopokuagyemang8052
    @frimpongopokuagyemang8052 3 года назад +1

    Saying that this video is "HELPFUL" would be an understatement. However, I have no bigger words. LOL! In short, THANK YOU DUDE! The way you make things clear, is just something else.👌👌👌👌👌

  • @kevin-u7719
    @kevin-u7719 3 года назад

    I have saved 1 hour while watching you 20 minutes concrete and robust explanatory video. Thank you Paul.

  • @chrisual
    @chrisual 3 года назад +3

    Much of this video is not appropriate anymore, but the description of what state, binding, etc are is TOTALLY worth watching. I have watched so many videos, but this is the first time I have understood these concepts. Well done Paul!!

    • @chezchezchezchez
      @chezchezchezchez Год назад

      I’m just getting started. What would you recommend is the perfect video right now for this information? Thank you very much.

  • @BroadcastYOzZelf
    @BroadcastYOzZelf 4 года назад +1

    I'm used .Net's, old Xaml's and to Qt Qml's (super elegant) property bindings. I was exactly looking for an intro on how SwiftUI does this. You found the perfect level between giving an overview and going into detail. Thanks!

  • @ac12484
    @ac12484 2 года назад

    Best no bs intro (experienced programmer here)

  • @brandonr.8784
    @brandonr.8784 Год назад

    Been stuck on these concepts for days, this video really help improve my understanding!

  • @marlhex6280
    @marlhex6280 2 года назад

    Please make more! I love the way you talk with passion and interest! Also the way you edit the videos with a final touch! Awesome job!!!

  • @uberunix
    @uberunix 3 года назад +1

    This is an absolutely fantastic explanation for someone like me who doesn't know enough yet to distinguish the significant bits of what the docs are saying. Thank you so much! :D

  • @JVancity
    @JVancity 5 лет назад +1

    Been messing around with all three for a few days now, getting things to 'work'! This video really hit the nail on the head and now I truly understand the why. Thanks Paul, you're a legend :)

  • @coolisfoolable
    @coolisfoolable 3 года назад +1

    This is THE best tutorial I've seen so far! And boy I've seen many.
    Thanks Paul!

  • @MatthewCawley
    @MatthewCawley 4 года назад +1

    I've watched a few different videos on @State, @ObjectBinding and @EnvironmentObject and it didn't make that much sense. Your explanation was amazing, clear and high descriptive. Great job :)

  • @triXtyle
    @triXtyle Год назад

    Amazing video, teaches us core concept in a very good way. BUT The Victor Hugo reference nailed it!!!

  • @AndreaCiani
    @AndreaCiani 4 года назад +1

    This is the best video about this things I have ever watched. You make simple and more complicated examples and you describe them extremely well. Congrats and thanks!

  • @rickstrickland2464
    @rickstrickland2464 5 лет назад +64

    Your clarity is awesome. Can you do one that uses Core Data?

    • @alihodroj9559
      @alihodroj9559 5 лет назад

      maybe he already did one go check : )

    • @rickstrickland2464
      @rickstrickland2464 5 лет назад +6

      Core Data with SwiftUI

    • @alihodroj9559
      @alihodroj9559 5 лет назад

      @@rickstrickland2464 oh now i get it : )

    • @brunofulber4688
      @brunofulber4688 5 лет назад +2

      I wasn't able to make it work too, got to figure a good way to make managed objects conform to bindableObject

    • @stephencollins2831
      @stephencollins2831 4 года назад

      I’ve been an iOS dev for 1 week :) i think you can pull initial startup data out of core data in the scene delegate. Then pass that data into EnvironmentObjects so it can be accessible to all child view from main. Then each sub view can perform CRUD operations on it with core data. This method may not be great if you’re pulling a lot of data into memory. Perhaps there is a better way? Would love to hear!

  • @dhavalnena7386
    @dhavalnena7386 5 лет назад +1

    Every time I watch your videos it gives me a deeper understanding of the topic explained. Thank you so much!

  • @24Doggi
    @24Doggi 4 года назад

    Nest video for a guy who comes from java and python. Thanks!

  • @oliverbarreto1838
    @oliverbarreto1838 5 лет назад +6

    Great great tutorial... first division university class... core concepts really well explained and introduced vía telling an incremental story... a must watch... Apple should absolutely use this video and upload it to SwiftUI developer library
    💪🏻😀😎

  • @mistermagic4507
    @mistermagic4507 4 года назад

    Finally my company decided to start the next project using SwiftUI on iOS 13 and here I am, BOOOM :)

  • @koz
    @koz 5 лет назад +8

    Absolutely great stuff. You're making my Swift-learning experience a lot clearer.
    I'm intrigued about "who taught you?" though.
    Because I get the feeling you had a good teacher.
    (This is where you say you're self-taught too)

  • @petersuvara
    @petersuvara 5 лет назад

    Paul, we generally keep state as a completely different place to the UI components themselves, this provides a layer between state/transport and UI.

  • @nexplusedinburgh5545
    @nexplusedinburgh5545 5 лет назад +4

    Wow! Best SwiftUI video in the whole RUclips! Thank you!

  • @JacksMacintosh
    @JacksMacintosh 5 лет назад +3

    Oh my goodness. This @EnvironmentObject thing might just save my life. Thank you thank you!

  • @robertsan2654
    @robertsan2654 4 года назад +1

    Being an iOS & React developer feels great with SwiftUI. :)

  • @JellyLancelot
    @JellyLancelot 4 года назад

    These videos are soooooo good. Your teaching style is amazing and easy to follow, but not slow enough that I'm skipping around for the info. Clear, concise and concentrated. Superb! Also, you explain the WHY. It's so important, but what so many people miss.

  • @petrulutenco6600
    @petrulutenco6600 2 года назад +2

    For anyone watching in 2022 ❗❗
    @ObjectBinding was renamed to *@ObservedObject*
    BindableObject was renamed to *ObservableObject*
    and finally, in the new ObservableObject, didChnage was renamed to *objectWillChange*

  • @farukenstein
    @farukenstein 4 года назад +1

    "please just stop and thnik for one moment how amazing that is" is the one possible definition when it comes to swiftui.

  • @Dan-t6h2s
    @Dan-t6h2s 10 месяцев назад

    Just learning Swift.. this was really helpful. And I caught your bread and 24601 reference… Cheers for that one!!! 🥃

  • @ZoeSummers1701A
    @ZoeSummers1701A Год назад

    I think this is the best tutorial video you’ve ever made.

  • @rixantos
    @rixantos 11 месяцев назад

    Great video @twostraws very well explained and delivered! Time to write some SwiftUI...

  • @dlbYT8
    @dlbYT8 3 года назад

    Your content is gold. Thanks Paul!

  • @PeterPurmonen
    @PeterPurmonen 5 лет назад +2

    Excellent! All gaps flled. Thank you. 👍🏻

  • @michaelrogers6935
    @michaelrogers6935 5 лет назад

    Apple should've just let Paul see SwiftUI a week early and link all of their documentation to hackingwithswift.com. That would've saved a lot of developers a lot of time. What an awesome explanation!

  • @Nicolas-is3gq
    @Nicolas-is3gq 4 года назад +1

    Excellent tutorial, I finally understand these concepts after trying a few other sources. Thanks Paul!

  • @Mriceman2002
    @Mriceman2002 5 лет назад

    You explain very easily even without the help of your two
    dogs :) You are the best ! Hope you continue to make many more videos!

  • @shivammahendru6122
    @shivammahendru6122 3 года назад

    Much needed explanation!! Thanks Paul

  • @idembele
    @idembele 5 лет назад

    5:46 beautiful example on how @State keyword works

  • @littletalk8860
    @littletalk8860 5 лет назад +3

    Great explanation, love your professional tutorial

  • @yixe2253
    @yixe2253 5 лет назад

    You're a great teacher, easy to understand.

  • @guitaripod
    @guitaripod 4 года назад

    Now this now a year later, it's so clear. Thanks

  • @1sndct
    @1sndct 4 года назад

    Great explanation, been trying to grasp this concept for a loooooong time, its finally coming together. Thank you

  • @olepetersen4460
    @olepetersen4460 3 года назад +3

    You make really great videos, and thank you for that. Regarding this one: My projects have no SceneDelegate, so an update would be highly appreciated. Where and how do you set up the global varible in the .app file?

  • @thomasanderson1416
    @thomasanderson1416 Год назад +1

    Can we refactor all the states out of view structs in a single file for example, and still access and control them from all views?
    That would be so awesome.

  • @wizzards44
    @wizzards44 5 лет назад

    Paul you are smashing it again!!! Great breakdown of new tools!!!

  • @francescofuscaldo2364
    @francescofuscaldo2364 5 лет назад +1

    Great videos, thank you so much. I'd like to suggest you a subject for the next videos, it would be great to see how to work with CoreData and SwiftUI!

  • @SehajChawla
    @SehajChawla 5 лет назад +3

    Love all your tutorials. Would be great to have in depth tutorials on Combine framework as well.

  • @arkemal
    @arkemal Год назад

    I've learned a lot from this. Thank you!

  • @limtc
    @limtc 5 лет назад

    This is the best explanation so far! However, I do hope you can add in explanation of @Binding besides these 3.

  • @torcelly
    @torcelly 3 года назад

    Hi Paul. Thank you for this awesome video. Excellent tutorial. Your explanation is accurate, concise, and clear. Congrats!

  • @TK-tg1hx
    @TK-tg1hx 3 года назад

    You are really brilliant smart.... What a wonderful explain!? Thank you sooooo much!

  • @priceringo1756
    @priceringo1756 5 лет назад +9

    Should be required viewing to get your SwiftUI badge.

  • @niklasnickel
    @niklasnickel 5 лет назад

    Thank you very much! This was the first time I really understood what was going on...

  • @tomtubbs6254
    @tomtubbs6254 5 лет назад +1

    Thanks Paul - great visuals for the video along with your clear instruction.
    +1 for the request for a basic Swifty I app that uses core data.

  • @andrevdw747
    @andrevdw747 4 года назад +1

    What a clear explanation! Thanks! Also understandable for a beginner like me :-)

  • @marcoespinoza3327
    @marcoespinoza3327 4 года назад

    Stumbled upon your tutorials and explanations and it’s amazing. I am currently doing QA work and do some dev work too as I’m learning. However, this is preparing me for the future and I really appreciate your videos and explanations. I still want to transition from QA to dev because it’s more interesting but I know I have a while to go.

  • @piyushgeorge1847
    @piyushgeorge1847 5 лет назад

    Best tutorial for the states. Loved it

  • @thealchemist1480
    @thealchemist1480 5 лет назад

    This is well described and very helpful video indeed. Keep the good work up,,, you are doing a commendable job for the community.

  • @alexanderfitterling
    @alexanderfitterling 3 года назад

    Thank you so much for this video. You have amazing good teaching skills!

  • @ankitthakur85
    @ankitthakur85 5 лет назад

    These clarity is awesome. Could you please re-visit this again, once GM release happened for iOS 13. As the Combine framework is also in beta, and could have changes before GM release happens in September/October month.

  • @vipullal7689
    @vipullal7689 4 года назад

    Loved it! Clear tutorial.

  • @AnkitRathi7
    @AnkitRathi7 5 лет назад

    Everything clearly explained. Just one doubt, how can I use 2 user objects(like user1 and user2) from Environment?

  • @drinkitapp8121
    @drinkitapp8121 4 года назад +1

    3:59 is my favourite part of the the video 🤯

  • @sergehulne
    @sergehulne 3 года назад

    Excellent tutorial! Thanks!

  • @thomasanderson1416
    @thomasanderson1416 Год назад

    Question please?
    After using ObjectBinding on the User class.
    How do we access it from different views with recreating a new instance?

  • @di_nerd_apps
    @di_nerd_apps 4 года назад

    BEST EXPLANATIONS !! BIG UP!!!

  • @kronosDE
    @kronosDE 5 лет назад

    The Textfield mentioned in the video doesn't work anymore. The new API is now something like that: TextField("placeholder text", text: $myInput)

  • @kimtipatel7
    @kimtipatel7 Год назад

    U r superb explaining ❤

  • @anata.one.1967
    @anata.one.1967 5 лет назад +1

    Here's a really interesting problem, how do you do object binding of type int/double with textfield??

  • @doanvietios
    @doanvietios 5 лет назад +2

    I love SwiftUI n I love this Tutorial too. This is awesome.

  • @nirb16
    @nirb16 3 года назад

    Great explanation! Thank you

  • @SudipBhattacharyya
    @SudipBhattacharyya 3 года назад

    Excellent. Thank you so much ☺️☺️👍

  • @ChristianLeovido
    @ChristianLeovido 4 года назад

    Thank you so much, your explanation of these concepts is very clear

  • @haraprasadsenapati6662
    @haraprasadsenapati6662 4 года назад

    Awesome video Paul

  • @fortune1109
    @fortune1109 5 лет назад

    Hi Paul, thank you for the tutorials you are making. Helps me alot.

  • @AttilioPatania
    @AttilioPatania 5 лет назад

    thanks so much for this explanation, it works well to understands the way these annotations works, also if now the Object binding pattern is changed since the video was @published :)

  • @mattd5419
    @mattd5419 5 лет назад +1

    So what's @Binding used for?

  • @dimiutube
    @dimiutube 4 года назад

    Thanks for the great explanation, Paul! Now most of the magic behind SwiftUI is much clearer for me :-)

  • @kimsaypov162
    @kimsaypov162 4 года назад

    Great explanation. Thanks.

  • @max500k
    @max500k 3 года назад

    Awesome video, super concise!

  • @cularu1
    @cularu1 5 лет назад

    Very cool! Much simpler than managing state in android.

  • @enzmondo
    @enzmondo 2 года назад

    Didn't think I'd find a Les Mis reference in a video about how to pass around updated data in an app.

  • @farkhodkh2760
    @farkhodkh2760 2 года назад

    This is Great! Thank you Paul

  • @MeteoraEra
    @MeteoraEra 4 года назад

    Your videos are awesome man.

  • @crewshin
    @crewshin 5 лет назад +2

    FYI: It looks like the BindableObject code is already broken with beta 4 :( I'm getting an error that "User" doesn't conform to protocol "BindableObject".

    • @A-Plays
      @A-Plays 5 лет назад

      use ObservableObject instead and when u are creating a variable out of it use ObserevedObject for it.

  • @lvkd_
    @lvkd_ 5 лет назад

    Awsome Teacher.. thank you for your great lecture

  • @egormerkushev
    @egormerkushev 5 лет назад +1

    Thank you for this tutorial!

  • @olepetersen4460
    @olepetersen4460 3 года назад

    Another great video - thank you.

  • @thanhlamho4646
    @thanhlamho4646 5 лет назад +1

    How can i update “View, Text” when got data response from server.

  • @greggy16d
    @greggy16d 5 лет назад +3

    This is priceless. Thank you

  • @thomasipad7719
    @thomasipad7719 3 года назад

    Would a "@StateObject" be enought for the Class, without using Combine?

  • @SudaraF
    @SudaraF 5 лет назад

    Very good explanation, learnt a lot 👍

  • @alisonsmith5749
    @alisonsmith5749 5 лет назад

    Hi Paul, at ~15:15, you mention making sure to call passthroughsubject on the main thread. I searched all over and can't figure out how exactly to do that. Could you clarify via a code snippet on how to write that function on the main thread? Thanks!

  • @karanveersingh2264
    @karanveersingh2264 5 лет назад

    Very well explained. Can you please also tell how to get height/width and other properties of any view? I tried, but, couldn't find any.

  • @shivaskanthan6144
    @shivaskanthan6144 5 лет назад

    Excellent explanation!

  • @numerics77
    @numerics77 5 лет назад

    Xcode 11 beta 7, get errors at the 10:25 mark.. Cannot invoke initializer for type 'TextField' with an argument list of type '(Binding)'

  • @chettodust
    @chettodust 3 года назад

    What do we do at 18:40 now that Scene Delegates are not produced in new default SwiftUi files?

  • @michaelrogers6935
    @michaelrogers6935 5 лет назад

    Just one question: I can define var isAuthenticated = false, and then create a mutating method, toggleIsAuthenticated() to toggle it -- the compiler is happy with that. But, if I try and pass that into a Button, Button(action:{self.toggleIsAuthenticated()}, label:{Text("Toggle Me!")}), it is not happy -- and gives me the Cannot use mutating member on immutable value: 'self' is immutable error. Why is that?

  • @danielsaidi
    @danielsaidi 5 лет назад

    Is there any reason why so few tutorials mention @Binding?