Project Week + Graduation
This is the first stack where I had a full week to work on stack's project. My project's function is to be able to have a workout log, where you can customize each workout from a list of exercises where you can add/delete/edit each exercise. These workouts would then go to a log where, for every workout, a time would be displayed to show when you did these workouts.
This blog entry is going to be my entire project week wrapped up in one. I decided to do this project alone since I feel that I would learn more if I just did it by myself.
My idea going into this was to use core data. However, there were a lot of hiccups when it came to using it since I've never used it before. I went through the learning platform's chapter on it. Core data is a database within each iPhone. It's structure is liteSQL. I haven't worked with a SQL database since my first stack so it took some adjustment. The first problem I ran into was the one to many relationships: I realized my entity structures weren't correct. I wanted to link my list of exercises to each individual workout. But what I needed to do was to create an exercise table that contains all the exercises but IS NOT connected to any other tables.
After using MongoDB, I was blessed to have the ability to write arrays as a data type in my rows. Now, back to core data, I have to create another entity to just hold these many exercises. Cool, got that figured out. But the next problem was how to correctly link each exercise to a workout. My UI design is now at fault, since I haven't created a workout first before trying to add my exercises to said workout. What happened was a bunch of unwrapping nil errors.
This issue took me a day to overcome because I was too stubborn with how I was approaching it, thinking up and failing with 5 different solutions. Eventually I had to go about it in a different way and I realized that I had to first add the workout and the workout exercises has to come later.
By the end of the week, I had the ability to customize prototype table views, add/delete/edit exercises, add/edit/delete workouts and ability to add exercises to each of their own workouts and almost had the ability to add these workouts to the log. Unfortunately, I couldn't fetch properly the data. So all my workout log had was just the title. This is a project that I'm going to keep working on because I'm passionate about fitness but it's also a good way to keep my Swift knowledge intact.
Annnnd....THAT'S IT! I graduated! I graduated as a double black belt student and it feels weird to be done but so exciting. For some people, it's a big weight of their back but honestly I feel like the pressure is still on until you find a job. Cause one, as a dev, you're never done learning, and two, you have to do all the linkedin and resume stuff to start applying for jobs on top of learning more CS.
My next blog will be a review of the bootcamp and my future plans.