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
✅ Completed day 1 of #100DaysOfSwift #100DaysOfSwiftUI
I didn’t expect it to happen this early, but I actually learned something new on the very first day :D
✅ Completed day 2 of #100DaysOfSwift #100DaysOfSwiftUI
New things I learned today: default values in dictionaries, when and how to use Sets, automatically assigning integers to enums
✅ Completed day 3 of #100DaysOfSwift #100DaysOfSwiftUI
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.
✅ Completed day 4 of #100DaysOfSwift #100DaysOfSwiftUI
New things I learned today: „repeat-while“ loops and exiting outer loops by using labels.
✅ Completed day 5 of #100DaysOfSwift #100DaysOfSwiftUI
New things I learned today: variadic function parameters, how to write my own throwing functions, use inout parameters to change variables outside the function
✅ Completed day 6 of #100DaysOfSwift #100DaysOfSwiftUI
Trailing closures are very interesting. I should use them more often where appropriate.
✅ Completed day 7 of #100DaysOfSwift #100DaysOfSwiftUI
Learned many new things about closures like returning one from a function or how to capture external values.
🗓 This also marks my first week with #100DaysOfSwift #100DaysOfSwiftUI
So far I really enjoy doing this regularly. But I still can’t wait to get to the projects.
✅ Completed day 8 of #100DaysOfSwift #100DaysOfSwiftUI
Few new things for me today, but here are two of my favorite questions so far! :D
✅ Completed day 9 of #100DaysOfSwift #100DaysOfSwiftUI
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!
✅ Completed day 10 of #100DaysOfSwift #100DaysOfSwiftUI
Today I learned about the difference between classes and structs, as well as the „final“ keyword and deinitializers.
✅ Completed day 11 of #100DaysOfSwift #100DaysOfSwiftUI
Today I learned all about protocols, protocol extensions and also protocol-oriented programming which is very interesting!
✅ Completed day 12 of #100DaysOfSwift #100DaysOfSwiftUI and therefore the first chapter „Introduction to Swift“!
New things I learned today:
Failable initializers and optional try (try?)
✅ Completed day 13 of #100DaysOfSwift #100DaysOfSwiftUI which is the first consolidation day. I already learned quite a few new things, but there are many more to follow.
✅ Completed day 14 of #100DaysOfSwift #100DaysOfSwiftUI
And the projects are getting closer!
✅ Completed day 15 of #100DaysOfSwift #100DaysOfSwiftUI
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.
📌 Today I had to decide wether I should continue with #100DaysOfSwift or #100DaysOfSwiftUI. I already know quite a lot about UIKit, so I chose the former in order to consolidate my knowledge. And I’ll also learn about SpriteKit! …
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 …
✅ Completed day 16 of #100DaysOfSwift
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.
✅ Completed day 17 of #100DaysOfSwift
If I remember correctly, I have never used viewWillDisappear before. So today was the first time.
✅ Completed day 18 of #100DaysOfSwift
Finished the first project, passed the test and extended it with my own code.
✅ Completed day 19 of #100DaysOfSwift
Today I started the second project!
✅ Completed day 20 of #100DaysOfSwift
Today was about shuffling arrays and building IBActions and alerts.
✅ Completed day 21 of #100DaysOfSwift
Finished the second project „Guess the Flag“ and the challenges!
✅ Completed day 22 of #100DaysOfSwift
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!
✅ Completed day 23 of #100DaysOfSwift
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
✅ Completed day 24 of #100DaysOfSwift
Today I started project 4 which uses WKWebView to display web pages.
✅ Completed day 25 of #100DaysOfSwift
Today I learned about observers in combination with WKWebView’s "estimatedProgress" to change the value of an UIProgressView.
✅ Completed day 26 of #100DaysOfSwift
Finished project 4 and implemented all the challenges:
✅ Completed day 27 of #100DaysOfSwift
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!
✅ Completed day 28 of #100DaysOfSwift
Yesterday, I learned about UITextChecker and how to manually insert rows in a table view without needing to reload the whole view.
✅ Completed day 29 of #100DaysOfSwift
Finished project 5 which was pretty fun! I also solved all of the challenges.
✅ Completed day 30 of #100DaysOfSwift
Nothing new for me today, but it’s still good to revisit Auto Layout and Visual Format language.
✅ Completed day 31 of #100DaysOfSwift
Finished project 6 and completed the challenges.
Today was about Auto Layout anchors, which I played a lot with in the last years.
✅ Completed day 32 of #100DaysOfSwift
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.
✅ Completed day 33 of #100DaysOfSwift
Project 7 starts with UITabBarController, Data and Codable.
✅ Completed day 34 of #100DaysOfSwift
Today we injecting HTML into a web view which is also something I’ve done before. Nevertheless it was good to revisit ist.
✅ Completed day 35 of #100DaysOfSwift
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
✅ Completed day 36 of #100DaysOfSwift
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!
✅ Completed day 37 of #100DaysOfSwift
Now we have a working iPad game! Today was all about separating and joining strings, adding targets to buttons and hiding views.
✅ Completed day 38 of #100DaysOfSwift
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)
✅ Completed day 39 of #100DaysOfSwift
Today I learned about Grand Central Dispatch, quality of service queues and performSelector()
✅ Completed day 40 of #100DaysOfSwift
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
➡️ Progress day 41 of #100DaysOfSwift
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.
✅ Completed day 42 of #100DaysOfSwift
Start of project 10 and we’re finally using UICollectionViews!
✅ Completed day 43 of #100DaysOfSwift
Today was about UIImagePickerController and NSObject, both of which I already knew before.
✅ Completed day 44 of #100DaysOfSwift
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!
✅ Completed day 45 of #100DaysOfSwift
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!
✅ Completed day 46 of #100DaysOfSwift
Today I learned about SKAction, SKPhysicsContactDelegate and SKLabelNode.
✅ Completed day 47 of #100DaysOfSwift
Finished project 11 and learned about SKEmitterNode!
✅ Completed day 48 of #100DaysOfSwift
Today I learned about UserDefaults, NSCoding and finally “required init?(coder: NSCoder)”
✅ Completed day 49 of #100DaysOfSwift
Finished project 12 and solved all the challenges!
✅ Completed day 50! of #100DaysOfSwift
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 :)
🗓 50% Now that I’m halfway through, it’s time for a small recap! #100DaysOfSwift
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.
✅ Completed day 51 of #100DaysOfSwift
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
✅ Completed day 52 of #100DaysOfSwift
Today I started project 13. Nothing new besides an outlet for an UISlider.
✅ Completed day 53 of #100DaysOfSwift
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.
✅ Completed day 54 of #100DaysOfSwift
Finished project 13 and the challenges!
✅ Completed day 55 of #100DaysOfSwift
Today I was very confused because yesterday I forgot to tweet about my progress.
I started project 14 and learned about SKCropNode and SKTexture.
✅ Completed day 56 of #100DaysOfSwift
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 ^^'
✅ Completed day 57 of #100DaysOfSwift
Today was about animation: UIView.animate, CGAffineTransform and alpha.
✅ Completed day 58 of #100DaysOfSwift
Finished project 15 and the challenges!
✅ Completed day 59 of #100DaysOfSwift
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!
✅ Completed day 60 of #100DaysOfSwift
Today I learned about MKMapView, MKAnnotation and CLLocationCoordinate2D.
I really enjoy working with MapKit and will definitely play around with it in the future!
✅ Completed day 61 of #100DaysOfSwift
Today I finished project 16. I used a SFSafariViewController instead of a Web View.
✅ Completed day 62 of #100DaysOfSwift
Today I learned about pixel-perfect collision detection, Timer and linearDamping.
✅ Completed day 63 of #100DaysOfSwift
Finished project 17 and changed the textures!
@SpaceX Starship has to maneuver through space debris consisting of lost @Tesla roadsters, dragons, #JamesWebbSpaceTelescope​s and some low orbit space stations from a certain game! @elonmusk
✅ Completed day 64 of #100DaysOfSwift
Today I learned about assert(), breakpoints and view debugging!
✅ Completed day 65 of #100DaysOfSwift
3 challenges that could be solved quickly!
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.
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…
✅ Completed day 66 of #100DaysOfSwift
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.
You can follow @nmann_dev.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled: