{"id":2846,"date":"2020-02-21T21:08:03","date_gmt":"2020-02-21T21:08:03","guid":{"rendered":"http:\/\/4310.mynmi.net\/?page_id=2846"},"modified":"2026-03-21T22:01:23","modified_gmt":"2026-03-21T22:01:23","slug":"building-a-complete-project-with-swiftui","status":"publish","type":"page","link":"https:\/\/nmi.cool\/appdev\/building-a-complete-project-with-swiftui\/","title":{"rendered":"Building a complete project with SwiftUI"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Overview<\/h2>\n\n\n\n<p>This <a href=\"https:\/\/www.hackingwithswift.com\/quick-start\/swiftui\/swiftui-tutorial-building-a-complete-project\">LARGE lesson<\/a> comes from Hacking with Swift (hackingwithswift.com).  The person who produces these tutorials seems to have inside connections at Apple because his tutorials came out, it seemed like, seconds after Swiftui was announced last spring. The Hacking tutorials have lots of useful information and are one of the better resources I have found at this point. This particular lesson covers a LOT, but I think that most of you will like and benefit from it.  <\/p>\n\n\n\n<p>If you find yourself feeling overwhelmed by new concepts and jargon at some point, just plow through and keep on working. As I write this, I am going through the <strong>Observable objects, environment objects, and @Published section<\/strong> of the tutorial, and still am a bit puzzled by his explanation (and application) of ObservableObject. But it works, even though I&#8217;m not 100% clear on why and how it works.  <\/p>\n\n\n\n<p>My advice is to  enjoy this lesson and give it your best effort. Even if you don&#8217;t yet understand everything, it can serve as a great source of code and concepts for future projects if you give it enough effort. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Key Takeaways<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><code>ObservableObject<\/code> is a class-based model that broadcasts changes to any view that observes it.<\/li>\n\n\n<li><code>@Published<\/code> marks a property so that any change automatically notifies subscribed views and triggers a re-render.<\/li>\n\n\n<li><code>@EnvironmentObject<\/code> injects a shared model instance into an entire view hierarchy without manually passing it through every layer.<\/li>\n\n\n<li>This pattern \u2014 separating Model from View using <code>ObservableObject<\/code> \u2014 is the foundation of scalable, real-world SwiftUI apps.<\/li>\n\n\n<li>If certain concepts feel confusing mid-tutorial, keep going \u2014 the full picture often makes individual pieces click retroactively.<\/li>\n\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Overview This LARGE lesson comes from Hacking with Swift (hackingwithswift.com). The person who produces these tutorials seems to have inside connections at Apple because his tutorials came out, it seemed like, seconds after Swiftui was announced last spring. The Hacking tutorials have lots of useful information and are one of the better resources I have &hellip; <a href=\"https:\/\/nmi.cool\/appdev\/building-a-complete-project-with-swiftui\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Building a complete project with SwiftUI<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2846","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/nmi.cool\/appdev\/wp-json\/wp\/v2\/pages\/2846","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nmi.cool\/appdev\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/nmi.cool\/appdev\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/nmi.cool\/appdev\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nmi.cool\/appdev\/wp-json\/wp\/v2\/comments?post=2846"}],"version-history":[{"count":2,"href":"https:\/\/nmi.cool\/appdev\/wp-json\/wp\/v2\/pages\/2846\/revisions"}],"predecessor-version":[{"id":4166,"href":"https:\/\/nmi.cool\/appdev\/wp-json\/wp\/v2\/pages\/2846\/revisions\/4166"}],"wp:attachment":[{"href":"https:\/\/nmi.cool\/appdev\/wp-json\/wp\/v2\/media?parent=2846"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}