![]() - functionality for adding and deleting web views - functionality for typing addresses in the search bar and triggering page loads in the active web view |
||
---|---|---|
00-Introduction-to-Swift | ||
01-Storm-Viewer | ||
02-guess-the-flag/Guess the Flag | ||
03-social-media | ||
04-easy-browser/Easy Browser | ||
05-word-scramble/Word Scrable | ||
06-auto-layout/Auto Layout | ||
06-guess-the-flag-v2/Guess the Flag | ||
07-near-earth-objects/Near Earth Objects | ||
08-seven-swifty-words/Seven Swifty Words | ||
09-near-earth-objects-v2/Near Earth Objects V2 | ||
10-names-and-faces/Names And Faces | ||
11-pachinko/Pachinko | ||
12-names-and-faces-2a/Names And Faces 2a | ||
12-names-and-faces-2b/Names And Faces 2b | ||
13-instafilter/Instafilter | ||
14-whack-a-penguin/Whack a Penguin | ||
15-animation/animation | ||
16-safari-extension/Safari Extension | ||
17-swifty-ninja/Swifty Ninja | ||
18-debugging/Debugging | ||
19-capital-cities/Capital Cities | ||
20-fireworks-night/Fireworks Night | ||
21-local-notifications/Local Notifications | ||
22-detect-a-beacon/Detect A Beacon | ||
23-space-race/Space Race | ||
24-swift-extensions | ||
25-photo-share/Photo Share | ||
26-marble-maze/Marble Maze | ||
27-core-graphics/Core Graphics | ||
28-secret-text-editor/Secret Swift | ||
29-gorillas-remake/Gorillas Remake | ||
30-instruments | ||
31-ipad-multitasking/Multibrowser | ||
challenges | ||
.gitignore | ||
README.md | ||
certificate.jpg |
README.md

My project portfolio from following along with the book Hacking With Swift.
Beginner 📕
# | Project | Topics Covered | Progress |
---|---|---|---|
0 | 🛠 Introduction to Swift |
playgrounds, constants & variables, data types, operators, string interpolation, arrays & dictionaries, conditional statements, control flow, functions & methods, optionals, enumerations, classes & structures, property observers, access control, typecasting, closures | ✅ |
1 | 📱 Storm Viewer |
Xcode, UIKit, UIViewController, super , viewDidLoad(), FileManager, app bundles, try-catch blocks, Storyboards & Interface Builder, UITableView, UITableViewDelegate, UITableViewDataSource, UIImageView, UIImage, UIButton, Auto Layout, Outlets & Actions, UINavigationController, view stacking |
✅ |
2 | 🎮 Guess the Flag |
UIButton, action handling, asset catalogs, retina displays & @2x and @3x images, UIControlState, CALayer, UIView, UIColor, CGColor, random numbers, UIAlertController, UIAlertAction, UILabel, Auto Layout and alignment | ✅ |
3 | 🛠 Social Media | UIActivityViewController, UINavigationBar, UIBarButtonItem, #selector & @objc , Info.plist, privacy & permissions |
✅ |
4 | 📱 Easy Browser |
WKWebView, URL, URLRequest, UIToolbar, UIProgressView, KVO (Key-Value Observing) design pattern (not sure if this is an optimal design for most cases, though), WKNavigationDelegate, classes (instances passed by reference) vs structs (instances passed by copy), class inheritance and protocol conformance | ✅ |
5 | 🎮 Word Scramble |
string methods, NSRange, UITextChecker, lowercased(), IndexPath, anagrams, inserting rows into tables without reloading, UIAlertController text fields, constants can be declared w/o a value, as long as it's set before use | ✅ |
6a | 🛠 Auto Layout |
Ctrl-drag, Auto Layout Visual Format Language (including anchors, metrics, priority, and vertical/horizontal specifications) | ✅ |
6b | 🛠 Guess The Flag V2 |
Ctrl-drag, Auto Layout Visual Format Language (including anchors, metrics, priority, and vertical/horizontal specifications) | ✅ |
7 | 📱 Near Earth Objects |
UITabBarController, UITabBarItem, parsing JSON for structs that implement the Codable protocol, didFinishLaunchingWithOptions | ✅ |
8 | 🎮 Seven Swifty Words |
addTarget(), enumerated(), index(of:), joined(), replacingOccurrences(), property observers, range operators, programmatic button event handling | ✅ |
9 | 🛠 Grand Central Dispatch |
Grand Central Dispatch, async(), DispatchQueue.main, Quality of Service, global(), performSelector(inBackground:), never do UI work on a background thread | ✅ |
10 | 📱 Names to Faces |
UICollectionView, UICollectionViewCell, UICollectionViewDelegate, UICollectionViewDataSource, UIImagePickerController, UUID, Custom NSObject Classes, URLs for app directories, writing JPEG data to disk | ✅ |
11 | 🎮 Pachinko |
CGFloat, SKSpriteNode, UITouch, SKPhysicsBody, circleOfRadius/rectangleOf for shaping physics bodies, SKPhysicsContactDelegate, SKActions — and adding them to nodes, SKLabelNode, SKEmitterNode, sprite drawing blend modes, | ✅ |
12a | 🛠 Saving User Defaults & Data: NSCoding |
UserDefaults + NSCoding/NSKeyedArchiver | ✅ |
12b | 🛠 Saving User Defaults & Data: Codeable |
UserDefaults + Codeable/JSONEncoder/JSONDecoder | ✅ |
13 | 📱 Instafilter |
UISlider, CIImage, CGImage, CIContext, CIFilter, UIImageWriteToSavedPhotosAlbum, Using full function signatures with #selector | ✅ |
14 | 🎮 Whack-a-Penguin |
SKCropNode, SKTexture, SKActions, GCD's asyncAfter(), SKAction.playSoundFileNamed, SKAction.wait, run(block:) | ✅ |
15 | 🛠 Core Animation |
Swifty switch/case statements, animate(withDuration:), CGAffineTransform, view.transform, changing animatable properties of UIViews within an animation closure | ✅ |
Intermediate 📗
# | Project Name | Topics Learned | Progress |
---|---|---|---|
16 | 📱 Safari Extension & JavaScript Injection |
NSExtensionItem, plists (property lists), NSDictionary, NSExtensionJavaScriptPreprocessingResultsKey, UITextView, NSItemProvider, kUTTypePropertyList, keyboard notifications, NSValue, CGRect, CGPoint, CGSize, view.convert, UIEdgeInsets | ✅ |
17 | 🎮 Swifty Ninja |
SKShapeNode, CGPath, UIBezierPath, AVAudioPlayer, CaseIterable & custom enums, SKAction sequences and groups, default method parameters | ✅ |
18 | 🛠 Debugging |
print , assert , breakpoints, visual debugging, conditional breakpoints, lldb printing and expressions |
✅ |
19 | 📱 Capital Cities |
MKMapView, MKAnnotation, MKPinAnnotationView, CLLocationCoordinate2D, dequeueReusableAnnotationView(), switching between different map styles | ✅ |
20 | 🎮 Fireworks Night |
Timer, SKNode, SKAction.follow() and its awesome orientToPath option, motionBegan(), prefersStatusBarHidden, Timer.invalidate(), colorBlendFactor for SKSpriteNodes |
✅ |
21 | 🛠 Local Notifications |
UNUserNotificationCenter, UNNotificationRequest, UNNotificationAction, UNNotificationCategory, UNUserNotificationCenterDelegate, UNNotificationDefaultActionIdentifier | ✅ |
22 | 📱 Detect-A-Beacon |
iBeacons, Core Location, CLBeaconRegion, CLLocationManager, startMonitoring(for:), startRangingBeacons(in:), uuidgen , CLBeaconRegion, CLProximity |
✅ |
23 | 🎮 Space Race |
per-pixel collision detection, advancing particle systems, adjust linear & angular damping, touchesEnded(), touchesMoved(), touchesBegan() | ✅ |
24 | 🛠 Swift Extensions |
mutating methods, Protocol-Oriented programming, Self vs self , conventions regarding methods (generally, verbs) vs computed properties (generally, nouns/state), ExSwift |
✅ |
25 | 📱 Photo Share |
MultipeerConnectivity, MCSession, MCBrowswerViewController, showConnectionPrompt(), MCPeerID, MCAdvertiserAssistant, MCSessionDelegate, MCBrowserViewControllerDelegate, MCSession.send | ✅ |
26 | 🎮 Marble Maze |
categoryBitMask, collisionBitMask, contactTestBitMask, CMMotionManager, startAccelerometerUpdates, reading accelerometer data, compiler directives | ✅ |
27 | 🛠 Core Graphics |
Core 👏 Graphics 👏, UIGraphicsImageRenderer, exporting images with UIGraphicsImageRenderer.image(), UIGraphicsImageRendererContext, CGContext, CGContext.addRect(), CGContext.addEllipse(), NSString.draw(with:), UIFont, NSMutableParagraphStyle(), drawing UIImages straight into a rendering context | ✅ |
28 | 📱 Secret Swift |
Using the KeychainAccess library, resignFirstResponder(), NotificationCenter, UIApplication.willResignActiveNotification, LocalAuthentication, LAContext, canEvaluatePolicy(), .deviceOwnerAuthenticationWithBiometrics, evaluatePolicy(), privacy for Touch ID & Face ID, simulating Face ID with the Simulator | ✅ |
29 | 🎮 Exploding Monkeys |
UIKit + SpriteKit, texture atlases, scene transitions, destructable terrain, using stride to create a sequence of evenly-spaced numbers 💥, HSB FTW 🎨 |
✅ |
30 | 🛠 Instruments |
Profiling applications with the Instruments app, view debugging, draw debugging, memory pressure debugging, Time Profile debugging | ✅ |
Advanced 📘
# | Project Name | Topics Learned | Progress |
---|---|---|---|
31 | 📱 Multibrowser |
UIStackView, iPad multitasking, addArrangedSubview(), WKNavigationDelegate, UITextFieldDelegate, UIGestureRecognizerDelegate, App Transport Security | 🚧 |
32 | 📱 Swift Searcher |
Dynamic Type, NSAttributedString, SFSafariViewController, SFSafariViewControllerDelegate, Core Spotlight, UIContentSizeCategoryDidChange | 🔴 |
33 | 📱 Name That Tune |
AVAudioRecorder, AVAudioSession, requestRecordPermission(), CloudKit, CKRecord, CKAsset, CloudKit Dashboard, CKQueryOperation, NSPredicate, CKRecord.Reference, fetch(withRecordID:), save(), CKQuerySubscription, NSSortDescriptor | 🔴 |
34 | 🎮 Four in a Row |
GameplayKit AI, GKGameModel, GKGameModelPlayer, GKGameModelUpdate, AI Heuristics, NSCopying, GKMinmaxStrategist | 🔴 |
35 | 🛠 Random Numbers |
Int.random(in:), Float.random(in:), Double.random(in:), CGFloat.random(in:), Bool.random(), arc4random(), GKRandomSource.sharedRandom(), GKLinearCongruentialRandomSource, GKMersenneTwisterRandomSource, GKARC4RandomSource, GKRandomDistribution, GKShuffledDistribution, GKGaussianDistribution, Fisher-Yates Algorithm, arrayByShufflingObjects(in:) | 🔴 |
36 | 🎮 Crashy Plane |
Composed Methods, Scale Modes, Parallax Scrolling, SpriteKit Physics, SKPhysicsContactDelegate, SKPhysicsBody, SKAudioNode, Managing Game State | 🔴 |
37 | 🎮 Psychic Tester |
WatchKit Extensions, 3D Touch, CAEmitterLayer, CAGradientLayer, @IBDesignable, @IBInspectable, transition(with:), WCSession, WKInterfaceLabel, WKInterfaceButton | 🔴 |
38 | 🛠 Github Commits (Core Data) |
NSFetchRequest, NSManagedObject, NSPredicate, NSSortDescriptor, NSFetchedResultsController, ISO8601DateFormatter | 🔴 |
39 | 🛠 Unit testing with XCTest |
XCTest, filter() , Test-Driven Development, Functional Programming, XCTestCase, Setting a Baseline, NSCountedSet, XCUIApplication(), XCUIElementQuery, UI Test Recording |
🔴 |
Challenges 🥅
# | Project Name | Progress |
---|---|---|
0 | 🛠 Fizz Buzz |
✅ |
1 | 📱 World Flags |
✅ |
2 | 🎮 Hangman |
✅ |
3 | 📱 Storm Viewer 2 (Collection View) |
✅ |
4 | 📱 Country Facts |
✅ |
5 | 📱 Imitation Apple Notes App |
🚧 |
6 | 🛠 Expanding on Extensions |
✅ |
7 | 🛠 Core Graphics Rainbow 🌈 |
✅ |
8 | 📱 Private Photos App |
✅ |
KEY |
---|
📱 = App |
🎮 = Game |
🛠 = Technique |
✅ = Complete |
🚧 = In Progress |
🛑 = Not Started |