5a193c5f26 | ||
---|---|---|
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 | ||
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 , Protocol-Oriented Programming, Methods as Verbs, Properties as State, ExSwift |
🔴 |
25 | 📱 Selfie Share |
MCSession, MCBrowswerViewController, showConnectionPrompt(), MCPeerID, MCAdvertiserAssistant, MCSessionDelegate, MCBrowserViewControllerDelegate, Data, data(using:), String.Encoding.utf8 | 🔴 |
26 | 🎮 Marble Maze |
categoryBitMask, collisionBitMask, contactTestBitMask, CMMotionManager, update() | 🔴 |
27 | 🛠 Core Graphics |
UIGraphicsImageRenderer, UIGraphicsImageRendererContext, CGContext, addRect(), addEllipse(), String.draw(with:), UIFont, NSMutableParagraphStyle() | 🔴 |
28 | 📱 Secret Swift |
KeychainWrapper, resignFirstResponder(), NotificationCenter, UIApplication.willResignActiveNotification, LocalAuthentication, LAContext, canEvaluatePolicy(), .deviceOwnerAuthenticationWithBiometrics, evaluatePolicy(), [unowned self] , self , Privacy for Touch ID & Face ID |
🔴 |
29 | 🎮 Exploding Monkeys |
UIKit + SpriteKit, Texture Atlases, Scene Transitions, Destructable Terrain | 🔴 |
30 | 🛠 Instruments |
TimeProfiler, Color Blended Layers, Color Offscreen-Rendered Yellow, Color Hits Green and Misses Red | 🔴 |
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 |
🚧 |
KEY |
---|
📱 = App |
🎮 = Game |
🛠 = Technique |
✅ = Complete |
🚧 = In Progress |
🛑 = Not Started |