One of my New Year's resolutions is to dive deeper into #Swift and finally launch my first own app. To stay motivated during the little free time I have, I will follow #100DaysOfSwift and #100DaysOfSwiftUI starting today! https://twitter.com/twostraws/status/1091274909613989889
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
I didn’t expect it to happen this early, but I actually learned something new on the very first day :D
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
New things I learned today: default values in dictionaries, when and how to use Sets, automatically assigning integers to enums
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Due to my prior knowledge there was nothing new for me today apart from the expression „compound assignment operator“. Can’t wait to get to the projects, but I think I will stick to one lesson a day, just to stay consistent.
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
New things I learned today: „repeat-while“ loops and exiting outer loops by using labels.
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
New things I learned today: variadic function parameters, how to write my own throwing functions, use inout parameters to change variables outside the function
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Trailing closures are very interesting. I should use them more often where appropriate.
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Learned many new things about closures like returning one from a function or how to capture external values.
![Spiral calendar pad 🗓](https://abs.twimg.com/emoji/v2/72x72/1f5d3.png)
So far I really enjoy doing this regularly. But I still can’t wait to get to the projects.
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Few new things for me today, but here are two of my favorite questions so far! :D
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
I’ve never used lazy vars but heard of them before. Some articles are also hiding deep in my Safari reading list (like many others ^^’).
Static properties are also great!
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Today I learned about the difference between classes and structs, as well as the „final“ keyword and deinitializers.
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Today I learned all about protocols, protocol extensions and also protocol-oriented programming which is very interesting!
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
New things I learned today:
Failable initializers and optional try (try?)
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
After reviewing the last topics of the first chapter, I now feel more than well prepared for the first project tomorrow!
Unfortunately I have to postpone day 16. It was my grandmas birthday and I had a lot of university exercises left, which I’ve just finished.
![Pushpin 📌](https://abs.twimg.com/emoji/v2/72x72/1f4cc.png)
SwiftUI seems very promising and I think I will like it a lot, so I will definitely check it out directly after I finished the first 100 days. Now going back to today …
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Eww, Storyboards!
I prefer writing code directly, but I think it’s good to also know in detail how the Storyboard and XIBs work.
However depending on what is used for how long, I will at some point follow along with code only.
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
If I remember correctly, I have never used viewWillDisappear before. So today was the first time.
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Finished the first project, passed the test and extended it with my own code.
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Today was about shuffling arrays and building IBActions and alerts.
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Finished the third project and extended the first two.
Also: did you know you can duplicate a folder on macOS by drag&move, hold option key, release? That’s neat!
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Today is the second consolidation day which reviews projects 1-3.
Things I would love to improve if I had enough time:
- Spacing between flags
- Make use of rounded corners and shadows
- Display additional data
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Today I started project 4 which uses WKWebView to display web pages.
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Today I learned about observers in combination with WKWebView’s "estimatedProgress" to change the value of an UIProgressView.
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Today I learned about capture lists and weak, strong & unowned references. I already knew that retain cycles are a thing, but now I also know how to circumvent them!
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Yesterday, I learned about UITextChecker and how to manually insert rows in a table view without needing to reload the whole view.
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Finished project 5 which was pretty fun! I also solved all of the challenges.
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Nothing new for me today, but it’s still good to revisit Auto Layout and Visual Format language.
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Finished project 6 and completed the challenges.
Today was about Auto Layout anchors, which I played a lot with in the last years.
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
This is the consolidation day for projects 4-6 where I had to create an app from scratch again. I already like how I can code most of this without thinking too much how to approach it.
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Today we injecting HTML into a web view which is also something I’ve done before. Nevertheless it was good to revisit ist.
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Finished project 7 and its challenges.
These projects also provide a great foundation to add some own improvements like in this case using SF Symbols, an active filter symbol and text @twostraws
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Creating the UI in code can be very tedious, but I still prefer it over IB. Also there are some ways to tidy it up by quite some bit.
Can’t wait to see how I’ll like SwiftUI later this year!
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Now we have a working iPad game! Today was all about separating and joining strings, adding targets to buttons and hiding views.
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Finished project 8 and completed the challenges, however I later added lives and improved the design (both of which are heavily inspired by https://twitter.com/surakamy/status/1127122818766987264)
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Today I learned about Grand Central Dispatch, quality of service queues and performSelector()
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Not quite as satisfied with how the code looks. I definitely need to dive deeper into GCD & how to structure it. I found it’s easier to fall into calling UI code in the background w/ performSelector. I need to go back to this challenge later
![Rightwards arrow ➡️](https://abs.twimg.com/emoji/v2/72x72/27a1.png)
I will finish the game this weekend. I didn’t like to use just one label because I wanted to have a persistent underline underneath each single letter.
To Do: draw hangman images, alerts, score, lives and update the buttons when pressed.
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Today was about UIImagePickerController and NSObject, both of which I already knew before.
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Finished project 10 and I’m extremely happy with how it turned out. I followed @twostraws version + the challenges, but then made this my own.
There’s still a lot of room for improvement so I will come back to it at some point in the future!
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Today I learned about SKSpriteNode and SKPhysicsBody, both of which are part of SpriteKit. This is new territory for me, so it’s very interesting!
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Today I learned about SKAction, SKPhysicsContactDelegate and SKLabelNode.
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Today I learned about UserDefaults, NSCoding and finally “required init?(coder: NSCoder)”
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
I completed all challenges and reached another milestone!
I’m getting used to saving data with UserDefaults and Codable, calling code in a background thread and using the ImagePicker :)
![Spiral calendar pad 🗓](https://abs.twimg.com/emoji/v2/72x72/1f5d3.png)
I really enjoy all the different projects. Project 10 was my favourite so far, because I found a real use case for it. I already feel pretty safe using all the new things I learned.
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Happy to continue with the 2nd half! :)
Today I watched two of Paul’s conference talks which is something I should do regularly (I also need to attend one some day!)
Btw: Yesterday was the 51st day of the year and also the day of the Animal Crossing: New Horizons #NintendoDirect. So the title of yesterdays #100DaysOfSwift was very fitting! What a coincidence @twostraws :D
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Today I started project 13. Nothing new besides an outlet for an UISlider.
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Today I learned about CIContext, CIFilter and more. This was definitely a more difficult day, so I’ll probably need to revisit it again when I want to work with CoreImage.
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Today I was very confused because yesterday I forgot to tweet about my progress.
I started project 14 and learned about SKCropNode and SKTexture.
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Creating SK Particles is easy. Creating good ones is hard and mine are ok but could be way better.
! You might want to adjust the volume due to the sound effects and I cut the “game over” voice over from the twitter version, sry ^^'
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Today was about animation: UIView.animate, CGAffineTransform and alpha.
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
We should create an own app from scratch once again and implement these features.
I also added a way to sort the countries and will extend the app even further tomorrow!
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Today I learned about MKMapView, MKAnnotation and CLLocationCoordinate2D.
I really enjoy working with MapKit and will definitely play around with it in the future!
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Today I finished project 16. I used a SFSafariViewController instead of a Web View.
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Today I learned about pixel-perfect collision detection, Timer and linearDamping.
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Finished project 17 and changed the textures!
@SpaceX Starship has to maneuver through space debris consisting of lost @Tesla roadsters, dragons, #JamesWebbSpaceTelescopes and some low orbit space stations from a certain game! @elonmusk
Long time no see.
After day 65 I focused on studying for exams. Coming back to the #100DaysOfSwift I then wanted to put a lot more effort in day 66 but in the end I had lost all motivation.
After day 65 I focused on studying for exams. Coming back to the #100DaysOfSwift I then wanted to put a lot more effort in day 66 but in the end I had lost all motivation.
This was until the end of march when Nintendo hosted a new Direct mini where we didn’t get any Zelda game. So I combined this with day 66 and created my own Zelda Mobile Game. So…
![White heavy check mark ✅](https://abs.twimg.com/emoji/v2/72x72/2705.png)
Here’s a video where I showcase my Zelda Mobile Game. I’m very happy with how it turned out:
If you want to learn more about it, make sure to check out this thread (written in German) #100DaysOfSwift: https://twitter.com/nmanngamer/status/1246847082356449282
I will continue by completing at least one project a day. This might be content up to 3 days for one, but I should be able to handle it. My new goal is to finish before / at day 115, so I can complete the #100DaysOfSwiftUI on day 200.