Skip to content

Daily progress through Paul Hudson's "100 Days of Swift" challenge #100DaysOfSwift. https://www.hackingwithswift.com/100

License

Notifications You must be signed in to change notification settings

JulesMoorhouse/100DaysOfSwift

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

100DaysOfSwift

Project Prefixes

  • Pnn - Project
  • PnnX - Project with challenge changes
  • PnnA - Project A
  • Xnn - Full challenge project

Summary of all code

Day 16 / 17
- Folder: P01 StormViewer
- Topics: view controllers, storyboards, FileManager class, UIImageView, UIImage, UITableView, UINavigationBar and more.
- Has a number of images added to the bundle.
- P01 StormViewer/../ViewController.swift
- P01 StormViewer/../DetailViewController.swift
Day 18
- Folder: P01X StormViewer
- Challenge changes from the StormViewer project and interface builder updates, array sorting.
- P01X StormViewer/../ViewController.swift
- P01X StormViewer/../DetailViewController.swift
Day 19 / 20
- Folder: P02 GuessTheFlag
- Topics: Asset catalogs, buttons, colors, array shuffling, random number generation, @IBAction and UIAlertController.
- P02 GuessTheFlag/../ViewController.swift
Day 21
- Folder: P02X GuessTheFlag
- Challenge changes from the GuessTheFlag project, simple UI changes and a new UIAlertController.
- P02X GuessTheFlag/../ViewController.swift
Day 22
- Folder: P03 StormViewerActivity (based on P01 StormViewer aka Project 1)
- Topics: UIBarButtonItem and UIActivityViewController.
- P03 StormViewerActivity/../ViewController.swift
- P03 StormViewerActivity/../DetailViewController.swift
Day 23
- Folder: X01 WorldFlagsViewer
- Milestone project challenge covering projects 1 to 3.
- X01 WorldFlagsViewer/../ViewController.swift
- X01 WorldFlagsViewer/../DetailViewController.swift
Day 24 / 25
- Folder: P04 SimpleBrowser
- Topics: WKWebView, action sheets, UIProgressView, key-value observing and more.
- P04 SimpleBrowser/../ViewController.swift
Day 26
- Folder: P04X SimpleBrowser (based on P04 SimpleBrowser aka Project 4)
- Challenge changes from the SimpleBrowser project, webView navigation and add a UITableView as a new initial screen.
- P04X SimpleBrowser/../ViewController.swift
- P04X SimpleBrowser/../ListViewController.swift
Day 27 / 28
- Folder: P05 WordScrable
- Topics: capture lists and reading files.
- P05 WordScrable/../ViewController.swift
Day 29
- Folder: P05X WordScrable (based on P05 WordScrable aka Project 5)
- Challenge changes from the WordScrable project, refactoring and added UIAlertController etc.
- P05X WordScrable/../ViewController.swift
Day 30
- Folder: P06A GuessTheFlag (based on P02X GuessTheFlag aka Project 2)
- Topics: aspect ratio constraints, Visual Format language and more.
- P06A GuessTheFlag/../ViewController.swift
Day 31
- Folder: P06B Autolayout
- Folder: P06X AutoLayoutAnchors
- Topics: advanced Visual Formatting Language and Auto Layout anchors.
- Challenge changes from the Autolayout project, added further anchors etc.
- P06B AutoLayout/../ViewController.swift
- P06X AutoLayoutAnchors/../ViewController.swift
Day 32
- Folder: X02 - Shopping List
- challenge project.
- Milestone project challenge.
- X02 ShoppingList/../ViewController.swift
Day 33 / 34 / 35
- Folder: P07 WhiteHousePetitions
- Folder: P07X WhiteHousePetitions (based on P07 WhiteHousePetitions aka Project 7)
- Topics: UITabBarController, Data, Codable, UITabBarController and UIStoryboard.
- Challenge changes, add a new UIBarButtonItem + UIAlertController and filter results etc.
- P07 WhiteHousePetitions/../AppDelegate.swift
- P07 WhiteHousePetitions/../ViewController.swift
- P07 WhiteHousePetitions/../DetailViewController.swift
- P07 WhiteHousePetitions/../Petition.swift
- P07 WhiteHousePetitions/../Petitions.swift
-
- P07X WhiteHousePetitions/../AppDelegate.swift
- P07X WhiteHousePetitions/../ViewController.swift
- P07X WhiteHousePetitions/../DetailViewController.swift
- P07X WhiteHousePetitions/../Petition.swift
- P07X WhiteHousePetitions/../Petitions.swift
Day 36 / 37 / 38
- Folder: P08 SwiftyWords
- Folder: P08X SwiftyWords (based on P08 SwiftyWords aka Project 8)
- Topics: Text alignment, layout margins, UIFont, addTarget, enumerated, joined, replacingOccurences and more.
- Challenge changes from P08 SwiftyWords, UI changes and game logic.
- P08 SwiftyWords/../ViewController.swift
- P08X SwiftyWords/../ViewController.swift
Day 39
- Folder: P09A WhiteHousePetitions (based on P07X WhiteHousePetitions aka Project 7) - DispatchQueue.global - async, DispatchQueue.main.async
- Folder: P09B WhiteHousePetitions (based on P07X WhiteHousePetitions aka Project 7) - PerformSelector
- Topics: Grand Central Dispatch, quality of service queues, performSelector() and more.
- An important video on GCD https://www.hackingwithswift.com/read/9/3/gcd-101-async
- P09A WhiteHousePetitions/../AppDelegate.swift
- P09A WhiteHousePetitions/../ViewController.swift
- P09A WhiteHousePetitions/../DetailViewController.swift
- P09A WhiteHousePetitions/../Petition.swift
- P09A WhiteHousePetitions/../Petitions.swift
-
- P09B WhiteHousePetitions/../AppDelegate.swift
- P09B WhiteHousePetitions/../ViewController.swift
- P09B WhiteHousePetitions/../DetailViewController.swift
- P09B WhiteHousePetitions/../Petition.swift
- P09B WhiteHousePetitions/../Petitions.swift
Day 40
- Folder: P09X StormViewer (based on P01X StormViewer aka Project 1)
- Folder: P09X SwiftyWords (based on P08X SwiftyWords aka Project 8)
- Folder: P09X WhiteHousePetitions (based on P0X WhiteHousePetitions)
- Challenge GCD changes to several projects.
- P09X StormViewer/../ViewController.swift
- P09X StormViewer/../DetailViewController.swift
-
- P09X SwiftyWords/../AppDelegate.swift
- P09X SwiftyWords/../ViewController.swift
-
- P09X WhiteHousePetitions/../AppDelegate.swift
- P09X WhiteHousePetitions/../ViewController.swift
- P09X WhiteHousePetitions/../DetailViewController.swift
- P09X WhiteHousePetitions/../Petition.swift
- P09X WhiteHousePetitions/../Petitions.swift
Day 41
- Folder: X03 Hangman
- Milestone project challenge for Projects 7 to 9.
- X03 Hangman/Hangman/ViewController.swift
Day 42 / 43 / 44
- Folder: P10 NamesToFaces
- Folder: P10X NamesTofaces (based on P10 NamesToFaces aka Project 10)
- Folder: P10X StormViewer
- Topics: UICollectionView and UICollectionViewCell, UIImagePickerController, UUID, NSObject subclasses, and fatalError.
- P10 NamesToFaces/../ViewController.swift
- P10 NamesToFaces/../Person.swift
- P10 NamesToFaces/../PersonCell.swift
-
- P10X NamesToFaces/../ViewController.swift
- P10X NamesToFaces/../Person.swift
- P10X NamesToFaces/../PersonCell.swift
-
- P10X StormViewer/../ViewController.swift
- P10X StormViewer/../DetailViewController.swift
- P10X StormViewer/../Storm.swift
- P10X StormViewer/../StormCell.swift
Day 45 / 46 / 47
- Folder: P11 Pachinko
- Folder: P11X Pachinko (based on P11 Pachinko aka Project 11)
- Topics: SpiteKit, SKSpriteNode and SKPhysicsBody
- Challenge changes, use new images, position changes and game logic changes.
- P11 Pachinko/../GameScene.swift
- P11 Pachinko/../GameViewController.swift
-
- P11X Pachinko/../GameScene.swift
- P11X Pachinko/../GameViewController.swift
Day 48 / 49
- Folder: P12 UserDefaults - test project just showing some methods.
- Folder: P12A NamesToFaces NSCoding (based on P10X NamesTofaces aka Project 10)
- Folder: P12B NamesToFaces Codable (based on P10X NamesTofaces aka Project 10)
- Folder: P12X StormViewer (based on P09X StormViewer aka Project 1)
- Folder: P12X GuessTheFlag (based on P06A GuessTheFlag aka Project 2)
- Folder: P12X WordScrable (based on P05X WordScrable aka Project 5)
- Topics: UserDefaults, NSCoding (Objective C compatible), Codable (Not Objective C compatible), NSKeyedArchiver, NSKeyedUnarchiver, JSONEncoder and JSONDecoder
- Challenge changes, update older projects and add UserDefaults.
- P12 UserDefaults/../ViewController.swift
-
- P12A NamesToFaces NSCoding/../ViewController.swift
- P12A NamesToFaces NSCoding/../Person.swift
- P12A NamesToFaces NSCoding/../PersonCell.swift
-
- P12B NamesToFaces Codable/../ViewController.swift
- P12B NamesToFaces Codable/../Person.swift
- P12B NamesToFaces Codable/../PersonCell.swift
-
- P12X GuessTheFlag/../ViewController.swift
-
- P12X StormViewer/../ViewController.swift
- P12X StormViewer/../DetailViewController.swift
- P12X StormViewer/../Storm.swift
-
- P12X WordScrable/../ViewController.swift
Day 50
- Folder: X04 CameraCaptions
- Milestone project challenge projects 10 to 12.
- X04 CameraCaptions/../ViewController.swift
- X04 CameraCaptions/../DetailViewController.swift
- X04 CameraCaptions/../Photo.swift
Day 51
- Watching a couple of conference videos
- https://www.youtube.com/watch?v=OgU8d_E1K14
- https://vimeo.com/291590798
Day 52 / 53 / 54
- Topics: UISlider while also getting some practice with UIImagePickerController and saving to iOS Photos.
- Folder: P13 InstaFilter
- Folder: P13X InstaFilter (based on P13 InstaFilter aka Project 13)
- Challenge changes from P13 InstaFilter, additional slider for filter property and UI changes.
- P13 InstaFilter/../ViewController.swift
- P13X InstaFilter/../ViewController.swift
Day 55 / 56
- Topics: SKCropNode, SKTexture, and more.
- Folder: P14 Whack-A-Penguin
- Folder: P14X Whack-A-Penguin (based on P14 Whack-A-Penguin aka Project 14)
- Challenge changes from P14X Whack-A-Penguin, created a game over sound file, additional SKLabelNode and new SKEmitterNode for mud.
- P14 WhackAPenguin/../GameScene.swift
- P14 WhackAPenguin/../GameViewController.swift
- P14 WhackAPenguin/../WhackSlot.swift
-
- P14X WhackAPenguin/../GameScene.swift
- P14X WhackAPenguin/../GameViewController.swift
- P14X WhackAPenguin/../WhackSlot.swift
Day 57 / 58
- Topics: animate(withDuration:), CGAffineTransform, alpha, and more.
- Folder: P15 Animation
- Folder: P15X SwiftyWords (based on P09X SwiftyWords - aka Project 8)
- Folder: P15X InstaFilter (based on P13X InstaFilter aka Project 13)
- Folder: P15X GuessTheFlag (based on P06A GuessTheFlag aka Project 2)
- Challenge changes, update older projects with animations.
- P15 Animation/../ViewController.swift
- P15X SwiftyWords/../ViewController.swift
- P15X InstaFilter/../ViewController.swift
- P15X GuessTheFlag/../ViewController.swift
Day 59
- Folder: X05 CountryFacts
- Milestone project challenge 13 to 15.
- X05 CountryFacts/../ViewController.swift
- X05 CountryFacts/../Countries.swift
- X05 CountryFacts/../Country.swift
- X05 CountryFacts/../DetailTableViewController.swift
Day 60 / 61
- Topics: MKMapView, MKAnnotation, MKPinAnnotationView, CLLocationCoordinate2D, and more.
- Folder: P16 CapitalCities
- Folder: P16X CapitalCities (based on P16 CapitalCities)
- Challenge changes, add webview for wiki details shown via annotationView.
- P16 CapitalCities/../ViewController.swift
- P16 CapitalCities/../Capital.swift
-
- P16X CapitalCities/../ViewController.swift
- P16X CapitalCities/../Capital.swift
- P16X CapitalCities/../DetailViewController.swift
Day 62 / 63
- Topics: Pixel-perfect collision detection, advancing particle systems, Timer, linear and angular Damping, and more.
- Folder: P17 Space Race
- Folder: P17X Space Race (based on P17 Space Race)
- Challenge changes, added game restrictions and difficulty.
- P17 SpaceRace/../GameViewController.swift
- P17 SpaceRace/../GameScene.swift
-
- P17X SpaceRace/../GameViewController.swift
- P17X SpaceRace/../GameScene.swift
Day 64 / 65
- Folder: P18 Debugging
- Topics: Print, assert, breakpoints and view debugging.
- Challenge, debugging and changing values of older projects (didn't commit).
- P18 Debugging/../ViewController.swift
Day 66
- Folder: X06 ShootingGallery
- Milestone project challenge projects 16 to 18.
- X06 ShootingGallery/../GameScene.swift
- X06 ShootingGallery/../GameViewController.swift
- X06 ShootingGallery/../SpriteNode.swift
Day 67 / 68 / 69
- Topics: NSExtensionItem - creating a safari extension which runs JavaScript on a web page.
- Folder: P19 SafariJavascriptInjection
- Folder: P19X SafariJavascriptInjection (based on P19 SafariJavascriptInjection)
- Challenge changes, add a table view to list scripts and use UserDefaults to store them, tap to run, disclosure to edit.
- P19 SafariJavascriptInjection/../ViewController.swift
- P19 SafariJavascriptInjection/../ActionViewController.swift
-
- P19X SafariJavascriptInjection/../ViewController.swift
- P19X SafariJavascriptInjection/../ActionViewController.swift
- P19X SafariJavascriptInjection/../ScriptsTableViewController.swift
- P19X SafariJavascriptInjection/../SiteScript.swift
Day 70 / 71
- Topics: UIBezierPath, SKAction.follow(), for case let, and more.
- Folder: P20 FireworksNight
- Folder: P20X FireworksNight (based on P20 FireworksNight)
- Challenge, added action sequence to remove sprite, added game over etc.
- P20 FireworksNight/../GameScene.swift
- P20 FireworksNight/../GameViewController.swift
-
- P20X FireworksNight/../GameScene.swift
- P20X FireworksNight/../GameViewController.swift
Day 72 / 73
- Topics: UNUserNotificationCenter
- Folder: P21 LocalNotifications
- Folder: P21X GuessTheFlag (based on P15X GuessTheFlag)
- Challenge changes, update projects to update or add user notifications.
- P21 LocalNotifications/../ViewController.swift
- P21X GuessTheFlag/../ViewController.swift
Day 74
- Folder: X07 Notes
- Milestone project challenge 19 to 21.
- X07 Notes/../FoldersViewController.swift
- X07 Notes/../Folder.swift
- X07 Notes/../NoteListViewController.swift
- X07 Notes/../NoteViewController.swift
- X07 Notes/../Note.swift
Day 75 / 76
- Topics: Core Location, CLBeaconRegion, and more.
- Folder: P22 DetectABeacon
- Folder: P22X DetectABeacon (based on P22 DetectABeacon)
- Challenge, aded further beacons and a circle for range.
- P22 DetectABeacon/../ViewController.swift
- P22X DetectABeacon/../ViewController.swift
Day 77 / 78 / 79
- Topics: SKShapeNode, touchesEnded(), AVAudioPlayer, CaseIterable, removeFirst() and more.
- Folder: P23 SwiftyNinja
- Folder: P23X SwiftyNinja (based on P23 SwiftyNinja)
- Challenge, add game over, moved numbers, strings into enums and constants etc.
- P23 SwiftyNinja/../GameScene.swift
- P23 SwiftyNinja/../GameViewController.swift
-
- P23X SwiftyNinja/../GameScene.swift
- P23X SwiftyNinja/../GameViewController.swift
Day 80 /81
- Topics: String subscripts, contains(where:), NSAttributedString, and more.
- File: 24 SwiftStrings.playground
- File: P24X SwiftStrings.playground
- Challenge to write from string extensions.
- P24 SwiftStrings.playground/Contents.swift
- P24 SwiftStrings.playground/Contents.swift
Day 82
- Milestone project challenge 22 to 24
- File: X08 Extensions playground.
- X08 Extensions.playground/Contents.swift
Day 83 / 84
- Topics: Peer to peer networking, while also getting some practice with collection views, GCD, and more.
- Folder: P25 SelfieShare
- Folder: P25X SelfieShare (based on P25 SelfieShare)
- Challenge to add some UIAlerts for status, also send text messages and produce a list of users.
- P25 SelfieShare/../ViewController.swift
- P25X SelfieShare/../ViewController.swift
Day 85 / 86 / 87
- Topics: Core Motion, accelerometer, how to load a game level from a file and how to create custom physics bitmasks, while also getting some practice with fatalError(), SKAction, and more.
- Folder: P26 MarbleMaze
- Folder: P26X MarbleMaze (based on P26 MarbleMaze)
- P26 MarbleMaze/../GameScene.swift
- P26 MarbleMaze/../GameViewController.swift
-
- P26X MarbleMaze/../GameScene.swift
- P26X MarbleMaze/../GameViewController.swift
Day 88 / 89
- Topics: UIGraphicsImageRenderer, drawing fills and strokes, and insetting a CGRect, while also getting more practice with NSAttributedString and more.
- Folder: P27 CoreGraphics
- Folder: P27X CoreGraphics (based on P27 CoreGraphics) - emoji and word twin drawn.
- Folder: P27X StormViewer (based on P12X StormViewer aka Project 1) - draw text on image.
- P27 CoreGraphics/../ViewController.swift
-
- P27X CoreGraphics/../ViewController.swift
-
- P27X StormViewer/../ViewController.swift
- P27X StormViewer/../DetailViewController.swift
- P27X StormViewer/../Storm.swift
Day 90
- Milestone project challenge 25 to 27
- Folder: X09 MemeGenerator
- X09 MemeGenerator/../ViewController.swift
Day 91
- Topics: Core Graphics Redux
- File: Learn-Core-Graphics.playground.
- Blending/../LiveView.swift
- Checkerboards/Contents.swift
- Checkerboards/LiveView.swift
- Ellipses/Contents.swift
- Ellipses/../LiveView.swift
- Emoji/Contents.swift
- Emoji/../LiveView.swift
- Flags/Contents.swift
- Flags/../LiveView.swift
- Flowers/Contents.swift
- Flowers/../LiveView.swift
- Images/Contents.swift
- Images/../LiveView.swift
- Introduction/Contents.swift
- Lines/Contents.swift
- Lines/../LiveView.swift
- Rainbows/Contents.swift
- Rainbows/../LiveView.swift
- Rectangles/Contents.swift
- Rectangles/../LiveView.swift
- Rotation/Contents.swift
- Rotation/../LiveView.swift
- Sandbox/Contents.swift
- Sandbox/../LiveView.swift
- Stripes/Contents.swift
- Stripes/../LiveView.swift
- Strokes/Contents.swift
- Strokes/../LiveView.swift
- Text/Contents.swift
- Text/../LiveView.swift
- Translation/Contents.swift
- Translation/Sources/LiveView.swift
- LiveViewController.swift
Day 92 / 93
- Topics: LocalAuthentication framework and the iOS keychain, get some practice with UITextView and more.
- Folder: P28 SecretSwift
- Folder: P28X SecretSwift (based on P28 SecretSwift)
- Folder: P28X NamesToFaces Codable (based on P12B NamesToFaces Codable)
- Challenge: P28X SecretSwift + P28X NamesToFaces Codable - Add a unlock / done button, add a simple password fallback feature.
- P28 SecretSwift/../ViewController.swift
- P28 SecretSwift/../KeychainItemAccessibility.swift
- P28 SecretSwift/../KeychainWrapper.swift
-
- P28X SecretSwift/../ViewController.swift
- P28X SecretSwift/../KeychainItemAccessibility.swift
- P28X SecretSwift/../KeychainWrapper.swift
-
- P28X NamesToFaces Codable/../ViewController.swift
- P28X NamesToFaces Codable/../Person.swift
- P28X NamesToFaces Codable/../PersonCell.swift
Day 94 / 95 / 96
- Topics: How to generate a scene dynamically, how to connect SpriteKit and UIKit, and more.
- Folder: P29 ExplodingMonkeys
- Folder: P29X ExplodingMonkeys (based on P29 ExplodingMonkeys)
- Challenge to add wind and auto layout, scores and wind with increased difficulty (gravity / speed)
- P29 ExplodingMonkeys/../GameScene.swift
- P29 ExplodingMonkeys/../GameViewController.swift
- P29 ExplodingMonkeys/../BuildingNode.swift
-
- P29X ExplodingMonkeys/../GameScene.swift
- P29X ExplodingMonkeys/../GameViewController.swift
- P29X ExplodingMonkeys/../BuildingNode.swift
Day 97 / 98
- Topics: Time Profiler and Allocations instruments, how to draw shadows in both Core Graphics and CALayer, re-using table view cells in code, and more.
- Folder: P30 XcodeInstruments
- Folder: P30X XcodeInstruments (based on P30 XcodeInstruments) - remove all force unwraps
- Folder: P30X2 XcodeInstruments (based on P30X XcodeInstruments) - do all images processing at the start.
- P30 XcodeInstruments/../AppDelegate.swift
- P30 XcodeInstruments/../ImageViewController.swift
- P30 XcodeInstruments/../SelectionViewController.swift
-
- P30X XcodeInstruments/../AppDelegate.swift
- P30X XcodeInstruments/../ImageViewController.swift
- P30X XcodeInstruments/../SelectionViewController.swift
-
- P30X2 XcodeInstruments/../AppDelegate.swift
- P30X2 XcodeInstruments/../ImageViewController.swift
- P30X2 XcodeInstruments/../SelectionViewController.swift
Day 99
- Milestone project challenge 28 to 30
- Folder: X10 Pelmanism
- X10 Pelmanism/../GameScene.swift
- X10 Pelmanism/../GameViewController.swift
- X10 Pelmanism/../MessageNode.swift
- X10 Pelmanism/../PlayingCard.swift
Day 100
- Final Exam - Result: Certificate of Completion