Andrew's Journey to Release an app

Day 31 - Added Ingredients to Recipe Form

Monday, January 31, 2022

Today, I got one step closer to finishing the Recipe form! Who knew so much went into a simple form to add a new recipe. There’s almost an hour’s worth of content dedicated to these views. For me, an hour of Chris on video turns into much longer with stopping, coding, proceeding forward. Still, was happy to finish, “Lesson 7: Finishing the Form” in the iOS Databases class :slight_smile:

Day 32 - New Photo Asset + Accessing Photos

Tuesday, February 1, 2022

Today, I was excited to start the “Lesson 8: Image Picker” in Module 6 of the databases course. It teaches a fundamental concept many app developers would like to know: how to access photos/ take pictures with the camera.

Also, as a little challenge to myself as part of this lesson, I chose to use a non-copyrighted image for my upload image placeholder. In the lesson, Chris uses one with watermarks on it. I didn’t want to do this. So using the Apple SF Symbols app, I modified one of their images to look similar to the one Chris uses in the video. Through this, I learned that you can Select → Export any image in the SF Symbols app as a Scalable Vector Graphic (SVG). From here, I took it into Photoshop, added the text I liked, then placed it back into Xcode.

Day 33 - Continuing Access Photos

Thursday, February 3, 2022

Today I continued the task to accept user photos from the person’s camera or photo library. I was disappointed to learn that the method taught by Chris is being deprecated and replaced with PHPicker instead. So I plan to use this method once I finish Chris’s videos.

I find dealing with delegates/ UIKit stuff at all to be painful/ boring. However, I’m grateful to know how to handle these cases for the times where UIKit is the best technology.

1 Like

Day 34 - Finished Photo Lesson

Friday, February 4, 2022

Happy to finally select a photo from the image library or the camera, and have it show up in the app! It seems like an essential activity/ thing to know for any developer. Along the way, I got confused, because I do not understand the meaning of delegates/ some of the other terms. Still, happy to push through it, and get it working!

Sometimes I get frustrated learning iOS development. I think, is it really worth the time and effort to do this? It seems to take foreverrr to do some of the tiniest things within the app. Meanwhile, once I see the finished project built with Chris’s videos, I think, would I really be able to recreate something like this on my own? Still, pushing through and coding daily helps. It reinforces in the mind that these foreign concepts give value.

Day 35 - Finished Learning App v2 & Databases Course!

Saturday, February 5, 2022

Happy to report that I finished the database course. It taught many essential pieces for any app builder.

I love how in the last few lessons, I learned how to let the user take his or her own photo, or to choose a photo from the Photo Library. So many apps use user input like this, and my end-goal one is no exception. However, the way Chris teaches in the videos is being deprecated, so before moving on completely, I plan to refactor the code to use the non-deprecated PHPicker.

Also, I liked learning how to allow the user to have a search bar to search through all the recipes. It’s a great add-on.

2 Likes

:partying_face:

Congrats on finishing Databases!

1 Like

Thanks!! It took a while, but learned some great techniques to include in future projects :slight_smile:

Day 36 - Finished Challenge Lesson app

Monday, February 7, 2022

Today, I finished how to add a Featured View to the lessons app. Was very grateful to @dalcubierre1 posting this challenge https://codecrew.codewithchris.com/t/create-featuredview-on-the-learning-app/17260/4.

I often struggle with the SwiftUI portions/ getting an app to function on my own. I usually have no problem with the loops/ methods etc., but trying to put everything together can be difficult for me. It’s like trying one of the things Chris does in his video without having him guide you. It’s much harder…

Day 37 - Answering Forum Questions

Tuesday, February 8, 2022

Happy to report that I can now finallyyyyyy understand, and answer CWC Forum questions! Instead, of coding myself, so much today, I spent it answering others’ questions.

I was always in awe of some of the people that were able to answer left and right the different questions. That was one of my major goals: to be able to read and understand other people’s Swift code/ questions.

A bit thank you to the CWC+ staff that helped me get here! So many of the concepts taught are essential ingredients to any app.

1 Like

Day 38 - PHPicker + Live Text

Wednesday, February 9, 2022

Today, I went over how to use the PHPicker versus the UIImagePickerController for photos in SwiftUI. Previously, I got a deprecation warning for UIImagePickerController, but now I don’t. It makes me wonder, if there was a deprecation warning at all, because I can’t even recreate that warning… so eventually, I read some articles about the PHPicker. It has some bonuses, like limiting the content from the photo library to Live Photos, no videos, etc, that the UIImagePickerController did not contain. However, I could not find how to use it to select the person’s camera. For this reason, I kind of gave-up on the refactor.

During my research though, I learned about a powerful new Live Text feature in iOS 15, which allows newer devices to do natural language processing live or of photos, so that you can easily copy all the text in an image. One of my apps would benefit greatly from this feature, but unfortunately my iPhone is too old to use it itself. Great tutorial on it here: Capturing Text From Camera Using SwiftUI | raywenderlich.com.

Also, I analyzed some of the success stories from CWC. Some of the apps looked so professional, while others seemed to solve niche problems important to different users. Still, I wasn’t able to gear the success overall of the app. Would love to know the business metrics behind them, e.g. downloads, revenues, profits, etc.

1 Like

Day 39 - Focused Parameter

Saturday, February 12, 2022

Today, I learned how to use the new iOS 15 .focused parameter in SwiftUI. It accomplishes something, I always liked from many apps: if you press enter on the current field, it jumps you to the next one.

I also learned how to show/ hide a password field in a nice looking way.

See my repo here for more details on all this, and check out the awesome tutorial @joash recommended for this How to use @FocusState in SwiftUI | Bootcamp #60.

1 Like

Congratulation @RedFox1!

1 Like

Day 40 - Started Design Course!

Sunday, February 13, 2022

Was so excited to start the Design course today!! I’m glad that future students will begin this course before the Database course as well. This seems like the easier of the two course, plus it’s easy to get excited about beautiful designs.

I would have stayed away from drawing my own shapes in SwiftUI, but Chris breaks down the process, so easily! Plus, the reasons he cites for using your own designs are great. You get so much more performance this way. It takes way less memory and time for SwiftUI to generate an image versus to load a pre-made one from memory. In addition, it allows you full control of the object; rotating it; multiplying it; changing the colors are made easier through this method.

Day 41 - Valentine’s Day Break

Monday, February 14, 2022

Because of Valentine’s Day, I only managed to answer one person’s question in the forum! I took a stab at a notification question, and hope it works…

Day 42 - Design Course M1L2 Challenge

Tuesday, February 15, 2022

I was thrilled to get a CWC+ challenge as part of the SwiftUI Design course. It seems like, so long, since I received any challenges from CWC+. The Database course lacked many of the challenges that were so frequent in the early stages of the Foundations course, so happy to receive one through the Design course. Just as Chris said, it was a lot of fun to recreate this one design from scratch! I even used Photoshop to determine as closely as possible to the shape dimensions used by Chris, after trying them on my own. Pretty cool, what you can create with only SwiftUI shapes:

1 Like

Day 43 - Decodable + API Practice

Thursday, February 17, 2022

Took a shot again at trying to solve this question, and got some good API practice as part of it. Although, still haven’t figured out the true solution. Cool there’s an open source API with all the dog images though.

Day 44 - Dogs API + Paths

Sunday, February 20, 2022

Today, I continued hacking away at an interesting subject with Dog APIs. Through this, I learned how easy it is to use AsyncImages to seamlessly load multiple images from several URLs all at once.

Also, I continued with the Design course finishing the module one lesson three. It’s amazing what Paths can do! A Path describes where on an x/y coordinate system lines should be drawn, and can be used to create custom shapes. It’s a lot of fund, highly recommend it to anyone!

Wow. Amazing documentation :clap:

1 Like

Haha thanks @MeenakshiPoorani! The journal has become more or less my own personal journal, so I hope you got some value out of it :slight_smile:

I highly recommend starting one yourself, if you want to stick with learning Swift! It helped me get closer to my goal of coding an hour a day, not procrastinating on this, and just enjoying to code. There’s so much involved in this programming language/ the steps needed to create an app. However, once you learn a new feature e.g. the tab view, or a sheet, it’s so easy to implement it in your own app, because you can reference your old code/ have the knowledge of how to implement it.

Cheers,
Andrew

1 Like

Days 45-47 - Creating PDFs, Share Button Implementation

Friday, Saturday, Sunday, February 25-27

I spent the last couple of days learning how to create a PDF based on data. This is one critical feature I’ve missed from CWC+, so far, the ability to export a View or data from your app into a PDF, and share it. So I learned how to accomplish this the past couple of days :slight_smile: the sections on how to implement UIKit code within a SwiftUI app were critical to getting this working! Without those CWC+ sections I would have been completely lost.

Here are some links that helped me along the way:
This article goes into depths on how to create a PDF within Swift:

This StackOverFlow describes turning Views into PDFs:

Describes how to open a PDF within an app:

How to create a PDF:
https://www.hackingwithswift.com/example-code/uikit/how-to-render-pdfs-using-uigraphicspdfrenderer

Details how to share an item:
Showing 'UIActivityViewController' in SwiftUI - Stack Overflow.

Details more on the sharing feature within Swift as well as how to create your own share button such as “mustachify” :wink: