TEAM LICENSES: Save money and learn new skills through a Hacking with Swift+ team license >>

SOLVED: vtabmowProgress.days.0to100

Forums > 100 Days of SwiftUI

This is my progress post for the 100 Days of SwiftUI. I'm starting this from Day 69 on to the finish, I hope. Previous day's posts, starting from Day 0, can be found at:


Day 69 Completed

I finished Day 69. This day was ok. I was surprised at how easy it was to add maps to a project and implementing the biometric authentication wasn’t as nearly as difficult as Core Image. I don’t see myself using biometric authentication in any of my projects right now but it’s good to know how to do it.


Might I suggest putting your name in the thread title? "myProgress" doesn't tell us whose thread this is and once there are more posts, including some from other people, we would have to scroll up to see the OP's name if we wanted to know who created the thread. Just an idea.


Hacking with Swift is sponsored by Superwall.

SPONSORED Superwall lets you build & test paywalls without shipping updates. Run experiments, offer sales, segment users, update locked features and more at the click of button. Best part? It's FREE for up to 250 conversions / mo and the Superwall team builds out 100% custom paywalls – free of charge.

Learn More

Sponsor Hacking with Swift and reach the world's largest Swift community!

I also would like to make a suggestion if you "edit" you first post you can put which day you are on and as the thread is in 100 days of SwiftUI

vtabmow Progress - Day 69

then as you progress change the day this way people can follow you progress as you do each day, And if you have a question just put that after so people know that you have a question to answer.

Keep it up 🙌


👍Changes applied. Thanks. 👍


Day 70 Completed

I finished day 70. I found the first two videos to be rather straight forward. The third one was a little more difficult. I need to find some ways to practice some of this stuff in my own apps to solidify what I'm learning. I'll feel like information is leaking about of my brain and I'm forgetting stuff I've learned. I don't expect to be able to remember everything. For instance, I know when I try implementing maps, I'll need to go back and look at my notes to get it all working. My concern is I'll totally forget about some modifier or method that I learned and I won't even be aware I forgot about it.

At this point, having finished day 70, I do feel like I've accomplished something. I've still got lots of material left to get through, but I've also gotten through a significant portion of the course.


Day 71 Completed

I finished day 71. This was quite possibly the shortest day out of all the ones I've done so far. Two short videos. This MapKit stuff is really cool. I haven't figured out yet how I want to implement it my own stuff yet but I'd like to figure out something.


Day 72 Completed

I finished day 72. The stuff on MVVM I had seen in another class I'm doing. It was presented a little bit differently, but mostly the same. So, I didn't find that to be too difficult. The UIKit stuff still confuses me. These projects are definitely becoming more complicated, although the amount of material each day in this one didn't seem as overwhelming as some of the past ones. Tomorrow is challenge day. Those are a mixed bag. Some I've found easy, others I couldn't seem to figure out at all until I looked at the solutions. Mostly, I seem to be able to get through them.


Day 73 Completed

I finished day 73. This was kind of a weird challenge day. The first challenge had to do with the + button for adding new locations, being hard to tap. Only, it wasn't hard to tap for me. And moving the modifier to the lmage in the label really didn't change anything that I could tell. The second challenge, I really didn't see as an issue except for on an iPod Touch. Otherwise FaceID or TouchID automatically generate their own prompts if authentication fails. The third challenge was fairly straight forward except for figuring out this line of code in the intitializer:

_viewModel = StateObject(wrappedValue: ViewModel(location: location))

Once, I got that working correctly, the rest of it was fine.

Update: Turns out I was wrong about the plus button. My original BucketList app quit working and was crashing every time I tried running it and I wanted to redo it anyway because there were some things I didn't understand. Anyway, after looking at challenge 1 again, I was playing around with the wrong button and moving the modifiers does make things work better.


Day 74 Completed

I finished day 74. This day was mild compared to some of the recent days. I probably won't use some of the accessibility features in the near future because the apps I'm currently developing are for my own use or for immediate family members. However, this is good stuff to learn and if I ever do end up submitting anything to the app store, it's something I will try and implement.


Day 75 Completed

I finished day 75. I'm continuing to learn about accessibility modifiers. The material is fairly light compared to other things in the course. It's mostly thinking about how things should be grouped and adding the appropriate modifiers.


Day 76 Completed

I finished day 76. The challenges in this day were relatively straightforward. I did have to do a little searching to figure out how to scroll using VoiceOver because I'm not really familiar with it. Also, going back and looking at the Moonshot App, I feel like I've forgotten alot of stuff at this point. I may need to review the videos for that app. I also want to go back over the BucketList app because there is some stuff in there using underscores on State properties in a View's initializer that I'm still not understanding.


Day 77 Completed

I finished day 77. I found this to be a difficult challenge and very frustrating, but I was able to complete it. The very last line of the lesson is:

Remember, you already know everything you need to make this work – good luck!

I question whether that was true. I got stuck on figuring out the code for loading the saved image back into the user interface. I eventually searched online but only found information on how to save a jpeg, which was already in the lesson, but I couldn't find anything on how to load a saved image from a file. I gave up looking online and was going to post a question on the forum, but I took a break and came back to it and ended up figuring it out. I kind of stumbled across the answer by playing around with some things but the one particular line of code I used, I don't ever recall learning. I searched through my notes afterwards and I didn't find it there either.

Anyway, I figured it out by trying to save one particular file and reload that one particular file and then once I got that working, I implemented it for all the items in the list.

I also used the underscore before the State property in the intializer for the detail view to load the image for the selected item. So, I am able to implement that even if I still don't really understand it.


Day 78 Completed

I finished day 78. This was a somewhat difficult challenge but I got through it. I did have to go back and look at the previous projects to get it all working.

If you’re using the simulator rather than a real device, you can fake a location by going to the Debug menu and choosing Location > Apple.

On mine, it was under the Features menu

Also, I did not implement this:

Tip: If you want to make your app really useful, try setting the sourceType property of your image picker controller to .camera so that it lets user take new photos rather than import existing ones.

I'm not seeing where to set this. After doing some searching online, it looks more complicated to figure out than what I want to do at the moment. If I decide I want to use that functionality at a later time I'll into it, or maybe I'll post about it on the forum.


Day 79 Completed

I finished day 79. This was a short day. Two short videos. I played around with TabView before in an app I made for myself, but Paul went into more detail that what I had discovered on my own. @EnvironmentObject was new to me. I've seen others use it in their code but I didn't know what it's purpose was until now.


Day 80 Completed

I finished day 80. I've found some things confusing in this lesson. I may need to return to it later. I have found that I seem to eventually get the things I initially find confusing. Sometimes, it takes some time though. Sometimes, I have to see it used in active code and then come back to it a couple of more times before things finally click. So, I'm going to just accept being somewhat confused at the moment.


Day 81 Completed

I finished day 81. Some interesting topics here to explore in more detail later. I've been wanting to know how to do notifications for awhile, mainly badges, so that's something I can investigate further if it's not explained more over the next couple of days. Context menus and the swipe buttons are thing I didn't know about, so that was good to learn and I'm sure I can implement those somewhere in the near future.


Day 82 Completed

I finished day 82. This day wasn't too difficult. Some of this stuff I've played around with before. I definitely learned some new things. I looked ahead at tomorrow's work and it looks like several longer videos for tomorrow, so it will probably take two days to get through that as I have a busy weekend planned.


Day 83 Completed

I finished day 83. It wasn't along as I thought, though I am somewhat tired today and I'm not sure how much of it I processed. Anyway, another day done.


Day 84 Completed

I finished day 84. This day was ok. Some of the stuff on notifications I know I won't remember and I'll have to go back and look over it in my notes when I decide to implement but at least I have a place to start now.


Day 85 Completed

I finished day 85. I didn't find the challenges to be too difficult, though I did need to refer back to my notes. It's amazing how quickly I forget some of this stuff even though some of it I've done numerous times. I've worked quite a bit now with encoding and decoding json and writing it out to a file, yet I can never seem to remember all the steps without referring to my notes. With confirmation dialogs, this was the first time I actually implemented that on my own so that makes sense that I wouldn't remember the steps there, though they are very similar to alerts.

Also, my solutions weren't nearly as elegant as Paul's, but I'm really still just a beginner with all of this, so I'm if I can just get it working that's what matters most to me.

On a final note, I completely forgot why we implemented objectWillChange.send() in this project, so I'm going to want to review that at some point.


Day 86 Completed

I finished day 86. I found the material on gestures to be very interesting and I was able to practice it and get an effect I've been wanting to implement in one of my apps which is great. Anytime I can immediately implement this stuff in my own code, it helps reinforce the learning process for me. I found the material on haptics to be less interesting. The code was rather complicated and I personally don't like haptics. I don't like my phone buzzing and vibrating and I turn it off whenever I can. I realize other people may rely on it, but it's really not for me. It's definitely good to know about it and how it works if I ever decide to implement though.


Day 87 Completed

I finished day 87. I found today a little easier than yesterday with the exception of the optional animation function. That was a bit confusing. Timers are definitely useful and I implemented one a while back in one of my apps from some stuff I found online, so it's good to actually have it explained it a little more detail. Sometime, I'm able to get things working but I have no idea why they work which can be problematic when they stop working. Timers are also something I know I'll be using in the future as well. I'm not sure how I'll utilize the information about apps being active, inactive, or in the background but that may become clearer as I work through this project.

I have my own personal flashcard app that I built, so I am very interested in upgrading it with whatever Paul has done in this app. It also was one of my early apps, so I really do want to go back and improve it with all the things I've learned to this point. So, in general I am really interested in this particular project. I am feeling like I want this course to be done at this point, simply because it has been a long haul and alot of work. At the same time, I'm pondering what I'm going to do next; the Ultimate Portfolio App, 100 Days of Swift, Pro Swift,...Anyway, right now I need to keep plodding along to make it to the finish.


Day 88 Completed

I finished day 88. I almost forgot to do it today, which is a first. I got busy this morning with other projects and was going to sit down to do some work on one of my personal apps that I use and I realized I hadn't done today's lesson yet.

There's some stuff in today's lesson that I'm kind of fuzzy on. I am somewhat tired today as well; not sure why exactly. So, I'm sure that's impacting my cognitive abilities today. Anyway, the effects in the lesson are really nice and it looks good. I may go back and review this stuff again, but right now I'm not in the right state of mind to process any more.


Day 89 Completed

I finished day 89. I found today to be easier than yesterday. The videos were shorter as well. I still think I need to go back over day 88 but I don't have the time or motivation to do it today, so maybe this weekend.

At this point in the course, I'm able to make functional apps for myself that work and are helpful, but I don't really have Paul's flair, or others for that matter, for making them look nice. I can get the nuts and bolts working but the presentation isn't really there. I'm not sure if that's something I need to spend more time working on or if it's simply an ability I don't have.


Day 90 Completed

I finished day 90. This day was ok. Before, moving on to day 91, I will probably go back over the last few days and rebuild the app because I feel like there are a few things I didn't quite grasp. I'd rather take an extra day and cement those things in my brain before moving on to the challenge day. There are definitely some things I plan on implementing from this app into my own projects.


Day 91 Completed

I finished day 91. I spent an extra day rebuilding the app from days 88-90 because I was a little confused in a couple of spots. I was able to make sense of everything the second time around.

The first challenge for today was really easy and I thought this was going to be a cakewalk. On the second challenge, I was scratching my head for a bit, but it didn't take too long before I figured it out. I was thinking about extending Shape but I wasn't sure how to do it and I ended up using a custom modifier. The third challenge was brutal and I didn't think I was going to be able to figure it out, but after walking away and coming back to it, I was able to come up with an answer. It was somewhat similar to Paul's initial solution. His final solution though makes the app animation look much better than my solution did, but I'm just happy I was able to figure it out on my own. The bonus challenges I implemented as an extension to FileManager, probably not the best place to put it, but it worked.

I really like this app and I plan on repurposing parts of it for my own use. One of the first apps I made was a flashcard app that I still use so I want to combine techniques from this one with it.


Day 92 Completed

I finished day 92. The first video I found to be fairly easy and the first half of the second video as well. After that it started to get complicated. I followed what Paul was doing but I doubt I could implement it myself. There didn't seem be much discussion about dimensions that we had coming in and how they work. I watched the second two videos twice and played around with it some on my own but I'm still not totally getting it. I may go back to it. I may not.


Day 93 Completed

I finished day 93. This is quickly becoming my least favorite project. Like yesterday, the first video was ok but the next two were somewhat overwhelming. The effects Paul can generate are really impressive. Without spending significant time playing around with GeometryReaders I'm not likley to be able to produce anything similar and I'm not likely to remember much of this as I really don't see where I'd implement this in any of my current apps. I think it's cool and worthwhile, I just don't see myself using it right now. This project somewhat reminds me of the shapes and animation project though I had more fun with that one. I'll be glad to put this project behind me. I may try playing around with it more later today. Not sure at the moment.


Day 94 Completed

I finished day 94. In spite of my difficulties with this project and its complexity, I was able to complete the challenges. I felt they were fairly easy. For challenge one, my code exactly matched Paul's. For challenge two, my code was slightly different in one spot but accomplished the same thing and for challenge three I took a different approach. I interpreted the challenge somewhat differently than I think what he had in mind but it all worked and I'm fine with it. If I ever want to implement this stuff, I'll definitely need to spend more time on it. I missed several questions in the wrap-up. In spite of going over the videos several times, I don't feel there was enough practice in this project for things to be able to sink in for me. I don't plan on spending any more time on it at the moment either but I may revisit it at another time.


Day 95 Completed

I finished day 95. This was an interesting challenge. It wasn't too difficult except for the timer bit. That took a little bit of thinking on my part and I had to walk away from it and come back before I was able to get it working. I implemented all the challenges within the challenge except for the accessibility stuff. I wasn't trying to make a polished app with this, I just wanted to get it functioning. In light of that it wasn't really visually pleasing and I wasn't looking to implement accessibility. Basically, it was downright ugly, but it worked. I have been wanting to make a dice rolling app for awhile so this is likely one I will continue to refine or entirely redo. As far as my code went, it worked, but as always, Paul's solution was alot more refined. It didn't occur to me to do the die rolling inside the struct itself, but I did use a timer implementation similar to his. One more project left.


Day 96 Completed

I finished day 96. This day was fairly easy. I didn't find this day as interesting as some. I don't plan on developing anything for the iPad any time soon so learning about it really isn't that appealing to me. Everything, I'm currently working on is for the iPhone and I don't own a recent iPad and I have no plans to purchase one either. I did find the video on the searchable modifier to be something I might implement.


Day 97 Completed

I finished day 97. This day was ok. I learned a few new things. I understand better how the NavigationView works with the primary and secondary views. It was much clearer in this video with actual data than in the first video using simple Text views. A couple of longer videos in this day but they covered quite a bit of material we'd gone over before so it wasn't overwhelming.


Almost time for the >> BIG TEST <<

Vincent Pradeilles held a great session a few days ago. He took the 100 Days of SwiftUI test, live and (best part) gave his reasoning behind all his answers. Plus gave a few hints for not getting tripped up by tricky wording.

100 Days Test

Maybe this can be useful for your study?


Thanks. That's a good resource. It's almost three hours though. I saw you popped in on the chat. I watched the first couple of minutes and got the first two questions right. I have been going back through the review questions. I'm not sure if I'll finish those before the big test either, but yeah, gotta watch out for tricky wording, especially on the Is this valid Swift code questions?

Mostly, I've been concerned about what I'm going to do next. I think I've settled on the Ultimate Portfolio app though. It seems to be the next logical step from everything I've checked out. Plus I do have an app that I want to submit to the app store. It's nothing spectacular but it is something I use regularly, another family member uses regularly, and third person wants it as well.


Day 98 Completed

I finished day 98. I'm done with the last app and I'm thankful for that. I wasn't too enthusiastic going into this last app because part of the focus was on developing for the iPad which didn't really interest me, but there actually there wasn't that much time devoted to doing that and mostly it was continuing to learn stuff I wanted to learn. Tomorrow is the last challenge and then the final exam.


Day 99 Completed

I finished day 99. I found these challenges to be fairly straightforward. I have been working with similar things in my own projects so I'm sure that helped. For the first time my challenge three solution was almost identical to Paul's. All that's left is the final exam tomorrow.


Day 100 & Epilogue Completed

I finished day 100 and also the epilogue. I actually took my test last night. I got two questions wrong. One because I didn't read the question carefully enough and another because I didn't know the right answer.

I spent the previous week and a half going over all the review questions and one thing that became clear is that I still don't understand some of the topics as well as I'd like. I definitely plan on going back over some of the material, and I've already started that. I think I'm also going to do the Ulimate Portfolio App next as well. It seems to be the next logical step from the options I've researched.

Additionally, I want to submit an app to the app store in the next month or two. I guess I'll set myself a deadline of June 1st to get that out. It's mostly done but there are a few adjustments I want to make.

One last note, it took me roughly 160 days to get through the 100 days. I've been in IT for quite awhile but programming is new to me, other than some basic programming, scripts, database management and some courses I took in college years ago.

One last last note. Thanks to those of you on this forum who helped answer my questions and provided support my second time through. Using this forum was what gave me the motivation and understanding to be able to get through the tough spots.


Hacking with Swift is sponsored by Superwall.

SPONSORED Superwall lets you build & test paywalls without shipping updates. Run experiments, offer sales, segment users, update locked features and more at the click of button. Best part? It's FREE for up to 250 conversions / mo and the Superwall team builds out 100% custom paywalls – free of charge.

Learn More

Sponsor Hacking with Swift and reach the world's largest Swift community!

Archived topic

This topic has been closed due to inactivity, so you can't reply. Please create a new topic if you need to.

All interactions here are governed by our code of conduct.

Unknown user

You are not logged in

Log in or create account

Link copied to your pasteboard.