Awesome-Swift-Education
A curated list of resources for learning about the Swift Language
Key
- 📝 = Gist
- ✏️ = Repository
- 📓 = Blog
- 📄 = Blog Post
- 💾 = Slides
- 🎤 = Video Presentation
- 📹 = Video
- 🔗 = Link
- 📖 = Book
- 🔥 = Awesome List
- 🎓 = Learning Resource
- 📋 = Interview Questions
- 🔌 = Networking Related Post
- 📊 = Algorithm Related Post
Index
- Open Source Swift
- Swift Style
- In-Browser Swift Editors
- Quick References
- Blogs
- Newsletters
- Great Learning Resources
- Free Books
- Presentations
- WWDC Presentations
- Other Video
- Posts
- Animations and Front End Stuff
- Application Structure / Architecture
- Associated Types and Objects
- Closures
- Collections / Sequences / Generators
- Command Line and Swift Scripting
- Core Data
- Data Structures and Algorithms
- Design Patterns
- GCD and NSOperation
- Generics
- Development
- Enums and Pattern Matching
- Error Handling
- Extensions
- Functional Programming in Swift
- Functional Reactive Programming in Swift
- Initializers
- Interpolability
- Language Comparisons
- LLVM Compiler
- Objective C Transitioning to Swift
- Open Source Swift
- Operator Overloading
- Opinions about Swift
- Optionals and Types
- Other
- Problem Solving in Swift
- Production Swift
- Protocol Oriented Programming in Swift 2
- Realm
- Security
- Swift Language
- Text Manipulation
- Type Reflection and Casting
- Web Services and Networking
- Web Services - Other
- Interview Situations
Open Source Swift
- Apple Master Github Repository 👑
- Swift Master Repository 📝
- Download Swift 🔗
- Core Libs Unimplemented Parts 📝
- Swift Core Libs Foundation Repository 📝
- Swift Core Libs Dispatch Repository 📝
- Swift CommonMark parsing and rendering library in C 📝
- Swift Clang Repositroy 📝
- Swift LLDB Repository 📝
- Docker Swift 📝
- Swift Packages 📝
- Swift Compiler Crashes 📝
- Open Radar Swift 📄
Swift Style
In-Browser Swift Editors
Quick References
- Swift.org 📜
- That Thing In Swift 📜
- SwiftDoc 📜
- iOS Cookies 📜
- 🔥 Awesome Swift 📜
- 🔥 Another Awesome Swift 📜
- 🔥 Awesome Pure Swift 📜
- 🔥 Awesome iOS 📜
- iOS Good Practices 📜
- Little Bites of Cocoa 📜
- Libraries used in the top 100 Apps 📜
- Fu*king Closure Syntax 📜
- RAC Marbles 📜
- Swift Knowledge Base 📜
Blogs
- iOS at Artsy 📓
- The Swift Diary 📓
- Human Friendly Swift Blog 📓
- 🙌 Objc.io 📓
- NSBlog with Mike Ask 📓
- Use Your Loaf 📓
- Chris Eidhof 📓
- Ole Begemann 📓
- Uramio 📓
- Swift Weekly 📓
- Erica Sadun 📓
- ThinkAndBuild 📓
- MetalByExample.com 🔗
- David Owens 📓
- The iOS Times Curated Review of the latest leading Github Projects 📓
Newsletters
- This Week in Swift News: Curated Swift News 📰
- iOS Goodies 📰
- iOS Dev Weekly 📰
- Swift Sandbox Newsletter 📰
- SwiftLang Website 📰
- 🔥 Awesome Swift News 📰
- Swift Weekly 📰
- Gettin' Swifty With It 📰
Great Learning Resources
- Hacking With Swift 🎓
- A Better way to learn Swift 🎓
- Ray Wenderlich Tutorial Pages 🎓
- Swift Education 🎓
- Play with Swift 🎓
- Realm Roundup: 25 Realm Resources and Tutorials 📜
- Funcitonal Reactive Programming iOS Learning Resources 📜
- Learn Core Data 📜
Free Books
Presentations
- All the slides from Swift Summit 2015 🔗 and highlights from the talks 🔗 and notes 📄
- All the Presentations from Swift Summit London 🔗
- All Presentations from #Pragma Conference 🔗
- MobileKonf 2015 📹
- Functional Swift Conf 2014 📼
- CocoaConf Videos 📼
- 🔥 Awesome iOS Conferences 📝
WWDC Presentations
- Search through WWDC Presentations 🎤
- Code Samples From WWDC 🎤
- WWDC Full Text WriteUps 🎤
- 🙌 Protocol-Oriented Programming in Swift 🎤
- Make all Value Types Equatable 🎤
- Advanced NSOperations 🎤
- UI Testing in Xcode 🎤
- Continuous Integration made Easy in Xcode 7 🎤
- What's new in Xcode 🎤
- Swift in Practice 🎤
- Networking with NSURLSession 💾
Other Video
- Swift Language Youtube Channel 📼
- Free Swift Lang Course 📼
- Explaining the mutating keyword 📼
- Swift tutorial Video Series 📼
Posts
Animations and Front End Stuff
- Mixing SpriteKit with UIKit in iOS 9 📄
- AdaptiveUI Animations 🎤 and 💾
- iOS Animations with AutoLayout 🎤 and ✏️
- Metal and Swift 🎤
- Animating Constraints 📄
- Advanced UITableViews 🎤
- SpriteKit as an intro to SceneKit 💾
Application Structure / Architecture
- You Used To Inject Me In Your Constructor 💾
- Swift Inject Dependency Injection ✏️
- Class or Struct? 📄
- RE: Class or Struct 📄
- Uber Jetstream 📝
- Mutating Funcs in Swift Structs 📄
- MVVM in Swift 📄
- Refractor the Mega Controller 🎤
- 250 Days of using VIPER Architecture with Swift 🎤
- Safer with VIPER 📄
- Dependency Injection in Swift 📄
- Preventing Massive View Controllers 🎤
- A Structy Model Layer 📄
Associated Types and Objects
- Protocols with Associated Types and how they got that way 💾
- Associated Types in Swift Explained 📄
- Illuminating Forum Post 📄
- How to make Generic Protocols in Swift 📄
- Associated Enum Data As Types 📄
Closures
Collections / Sequences / Generators
- A quick guide to SequenceType 📄
- Sequences and Generators in Swift 📄
- Experimenting with Seqs and Generators 📄
- Can we please make a standard style for closures? 📄
- Sets vs Dictionaries in Swift 📄
- The Fibonacci SequenceType 📄
- Truly Lazy Sequences 🔗
- Using Generators for UITableView Pagination Purposes 📄
- A Little Respect for AnySequence 📄
- Swift Sequence Lib ✏️
Command Line and Swift Scripting
- Swift Scripting 🎤
- Learn Swift by running Scripts 📄
- Scripting in Swift is Pretty Awesome! 📄
- Swiftline 📝
- How Swift Scripting was used to make iOS Cookies 📄
- Writing an Xcode Plugin with Swift 📄
Core Data
- Core Competencies 🔌
- A Swift Into To Core Data 🔌
- Moving from ObjC to Swift with Core Data 🔌
- What, if any, ACID gurantees does Core Data Make? 🔌
- Core Data Libraries and NSKeyedArchiver 🔌
- Ditching Core Data for Something else 🔌
- JSQCoreDataKit 🔌
- Comparing Core Data Stacks 🔌
- Using Core Data with Swift 🎤
- Better Core Data Models with Swift 📄
- Core Data in 2015 and Magical Record in Swift 🎤
Data Structures and Algorithms
- An Array implemented in Swift by Mike Ash ✏️
- A Trie 📊
- A persistent tree using indirect enums 📊
- Deques, Queues, and Lists in Swift with indirect 📄
- Linked Lists are really slow 📊
- Linked Lists, Enums, Value Types 📊
- Singly Linked List ✏️
- Deques, Queues, and Lists in Swift 📊 🔗
- Contiguous Arrays in Swift 📊
- NSArrays are implemente with Circular Buffers 📊
- Open sourced CFArray 🔗
- Abstract Algebraic Structures in Swift 2 ✏️
- Patricia/Radix trees for Swift ✏️
- Genetic Programming in Swift ✏️
- Finger Trees in Swift ✏️
- Neural Networks in Swift ✏️
- Swift AI ✏️
- Lazy infinite streams ✏️
- Naive Bayes Classifier ✏️
- Swix Swift Matrix Math Library ✏️
- Red Black Tree 📝
- Tensor Methods in Swift ✏️
- Sort Utils ✏️
- Disjoint Sets ✏️
- Metaprogrammable ✏️
- Binary Tree ✏️
Design Patterns
- Swift Design Patterns 💾
- Template Method Pattern in Swift 📊
- Design Patterns Library in Swift 📊
- Creating a Cocoa Bindings Observable Pattern in Swift 📊
- Observer Pattern in Swift 📊
- The Sin of Singletons 📊
- The Null Object Pattern 📊
- Segues > Delegation 📊
- Functions as Factories 📊
- Conform to Objective C Protocols in Swift 📊
- Optional Protocol Methods 📊
- The Builder Pattern and Fluent Interface 📊
- A Better NSNotificationCenter Observer Pattern 📊
- Key Value Coding in Swift 📊
- Exploring KVO Alternatives in Swift 📄
Development
- Result Driven Development 💾
- Library Oriented Programming 🎤
-
- Oriented Programming 🎤
- Hole Driven Development 📄
- Entering a New Codebase 💾
Enums and Pattern Matching
- Enums
- Enums in Swift 🔗
- Advanced and Practical Enum Usage in Swift 📄
- Enumerating Tuple Values in Swift 📄
- Simplfied Login with Swift Enums 📄
- Testing of Enums made easy 📄
- How to compare Enums with Equatable 📄
- Raw representable enumeration 📄
- Enums with Associated Data vs Structs 📄
- The Sum Types are here 📄
- Algebraic Data Types in Swift 📄
- Pattern Matching
- Swift's pattern-matching switch statement 📄
- Custom pattern matching in Swift 📄
- Advanced Swift Pattern Matching in Detail 📄
- Control Flow & Pattern Matching 📄
- Ranges and Intervals in Swift 📄
- More Pattern Matching Examples 📄
- What is a variadic parameter? 📄
- Pattern Matching in Swift 📄
- Swift Pattern Matching in Detail 📄
- Pattern Matching with an if case 📄
- Pattern Matching with Recursive Values in Swift 📄
Error Handling
- Easy Error Handing 📄
- Swift Failiable Initializers 📄
- Swift 2.0: Why Guard is Better than If 📄
- Swift 2 Error Handling 📄
- Swift 2 Error Handling and Pattern Matching 📄
- Guard and Defer 📄
- Unmanaged Type 📄
- try/catch with asynchronous closures 📄
- Using the assert() keyword 📄
- Result: Swift type modelling the success/failure of arbitrary operations ✏️
- Error Styling in Swift 📝
- Async Error Handling in Swift 💾
Extensions
Functional Programming in Swift
- Deriving higher order functions in Swift 📄
- 🙌 Swiftz Functional Programming Library ✏️
- Swiftx Functional Data Types ✏️
- Functional View Controllers 📄
- Covariance and Contravariance in Swift 2.1 📄
- Monads & C# Tasks in Swift 📄
- Introduction to Function Currying in Swift 📄
- Practical Use of Curried Functions in Swift 📄
- Composing functions in Swift 📄
- Swift is not functional 📄
- Functional Paradigms in Swift 📄
- Functional Programming in the Swift Language 📄
- Map and FlatMap demystified 📄
- Using Local Closures with Swift 📄
- Function Params are Tuples in Swift 📄
- Lenses in Swift 📄
- Prelude Library 📄
- Functional Programming in a Playground 🎤
- Functional Programming as a Functionalist 🎤
- Object Oriented Functional Programming 🎤
- 🙌 Functional Programming in Swift 🎤
- NatashaTheRobot Explains Functional Programming 💾
- Make Swift More Functional 💾
- FP in Swift 💾
- Thinking Functionally Using Swift 💾
- Practical Declarative 💾 and Functional 💾 Swift
- Functional Notification Pattern 📄
- The monad among us 💾
- 🙌 Functors, Applicatives, and Monads in Swift 📄
- Futures and Latency as an effect in Swift 📄
- Continuation Passing Style in Swift 📄
- An intro to Continuation Passing Style in Swift 📄
- Proof in Functions 📄
- Functional Thinking 💾
- Chris Eidhof Functional Swift Talk 🎤
- Transducers and Reducers in Swift 2 ✏️
- Lenses, Prisms, Isos in Swift 2 pencil2
- Better Recursion with Swift 🎤
- Folds in Swift 📄 📄
- Swift Adventures in Monad Land 📝
- Functor and Monad in Swift 📄
- Llama Calculus 💾
- FingerTrees 📄
- FizzBuzz with infinite streams 📄
- 6 Killer Functional Swift Features 📄
- Thunks in Swift 📄
- 7 Habits for more functional Swift 💾
- Y Combinators in Swift ✏️
- Arrows in Swift ✏️
- Understanding Reduce in Swift 📄
- Monadic Functions in Swift ✏️
- Lazy Streams in Swift ✏️
- Funky Functional Programming Tools and Experiements ✏️
- Functional Memoization in Swift 📄
- Reader Monad in Swift ✏️
- Writer Monad in Swift ✏️
- Back to the Futures with Swift 💾
Functional Reactive Programming in Swift
- The Difference between RxSwift and ReactiveCocoa 📄, 📄
- FRP in Swift 2.0 🎤
- Functional Reactive Programming in an Imperative World 🎤
- 🙌 RAC 3 with Ash Furrow 💾, and some other nice 💾
- FRP with RAC in Swift 💾
- Learning RxSwift 🔗
- Upgrading to RxSwift 📄
- FRP is a forbidden term 📄
- What is FRP? On StackOverflow 📄
- From RAC to RxSwift: The (Mini) Survival Guide 🔗
GCD and NSOperation
- Basics 📄
- Methods of concurrency — GCD, agents, tasks and invocations 📄
- Code at the end of the queue 🔗
- Delaying Code Execution through Closures 📄
Generics
- Generic Arrays in Swift 2.0 📄
- The shortcomings of generic protocols 📄
- Generics in Swift, Part 1 📄
- Generics in Swift, Part 2 📄
Initializers
Interpolability with C and Objective-C
- Swift and C 🎤
- Swift & the ObjC Runtime 📄
- How is Swift Faster than Objective-C? 📄
- Wrapping a C library in a Swift Framework 📄
- How are NSDictionaries implemented in-memory? 📄
- Exposing NSMutableArray 📄
- Source-Code for the Objective-C Runtime 🔗
Language Comparisons
LLVM Compiler
Objective C Transitioning to Swift
- Method Swizzling in Swift 📄
Open Source Swift
- Building for Open Source 💾
Operator Overloading
- Operator Overloading and JSON Parsing in Swift 📄
Opinions about Swift
Optionals and Types
- Typelift Community Repo 📝
- Swift Optionals Made Simple 📄
- Swift's Type System 📄
- Every Kind of Optional 📄
- Understanding Downcasting Operators in Swift 📄
- Swift Manual Retain/Release 📄
- How I handle Optionals in Swift 📄
- How to unwrap an optional in 9 different ways 📄
- Optional Protocol Methodsin Pure Swift 📄
- Make a DSL in Swift 📄
- Type-Erased Wrappers in Swift 🎤
- Swift MetaTypes 📄
- Typing the Knot in Swift 🔗
Other
- @autoclosure, @inline, @noescape, and @noreturn Keywords 📄
- How to use @noescape 📄
- How to use @autoclosure 📄
- Magic Methods in Swift 📄
- weak vs unowned 📄
- Swift weak references 📄
Problem Solving
- Creating and Building a DSL in Swift 💾
- 🙌 FizzBuzz on steroids with Swift 💾
- Learning Swift the Euler Way 🎤
Production Swift
- How Carthage works 💾
- Bottom Up Programming in Swift 🎤
- Make a Cocoapods Framework 🎤
- Lessons from Production Swift 💾
Protocol Oriented Programming in Swift 2
- Protocols in Swift 📄
- POP is OOP Thesis 📄
- Standard Template Protocols 🔗
- Protocol Oriented MVVM 📄, 💾
- Functional thinking via Protocol Extensions 📄
- Protocol Extensions vs Type Extensions 📄
- Swift Diagrams Playground for P.O.P. 📄
- Gist covers whatever went on in the official presentation 📄
- What are the advantages? 📄
- Another look into the concept of P.O.P. 📄
- If you're subclassing, you're doing it wrong. POP and VOP explained 📄
- Every Swift Value Type Should be Equatable 📄
- Protocol Oriented Programming through UIKit 📄
- Protocols in Swift 📄
- Ray Wenderlich intro to P.O.P. 📄
- Protocol Extensions and the death of the Pipe forward operator 📄
- How Protocol Oriented Programming could still improve 📄
- THe Swift Protocol Proposal 📄
- Swift Default Protocol Implementations 📄
- 🙌 Mixins and Traits in Swift 2.0 📄
- Minimal Swift 2.1 Protocol Coformance 📄
- Favor Mixins over inheritance 📄
- Use Protocol Composition 📄
- The 55 Standard Lib Protocols Broken Down 📄
- Can Swift have Dependent Types? 📄
- More Misunderstanding of Dependent Types 📄
- 55 Standard Library Swift Protocols 💾
- Current Recommmended Protocol Usage 📄
- POP in Swift vs ObjC and C++ 📄
- POP Utility Belt ✏️
Realm
- Super simple Realm Intro 🔌
- Why Realm over Core Data? 🔌
- Official Realm Introduction 🔌
- Realm Tutorial 🔌
- Why Realm is great and why we're not going to use it 🔌
- Realm Best Practices 🔌
- Realm Repo 🔌
- What Realm does that Core Data doesn't 🔌
- Reddit Thread 🔌
- A look into Realm's Core DB Engine 🎤
- Working with Realm 🔌
Security
Swift Language
- Best of Swift 2 📄
- New Features in Swift 2 📄
- Switching your brain to Swift 📄
- Short Circuit Evaluation 📄
- How Swift makes your life better 📄
- Emerging best practices in Swift 🎤
- Swift Thinking 🎤
- Hidden Gems in Swift 🎤
- Making Friends with Value Types 🎤
- Catching up with Swift 💾
- Idiomatic Swift 💾
Text Manipulation
- RegularExpressions in Swift 📄
- Creating a Lexer in Swift 📄
- Creating an Abstract Syntax Tree Parser in Swift 📄
- Part 2 of the AST 📄
- String to Number Parser ✏️
Type Reflection and Casting
- Simple Reflection in Swift 📄
- Understanding Reflection in Swift and how to use it 📄
- Typecasting and the Swift Runtime 📄
Web Services and Networking
- SwiftHTTPStatusCodes 📝
- Calling APIs and Parsing JSON with Swift 📄
- Parsing Embedded JSON and Arrays in Swift 📄
- Real World JSON Parsing 📄
- Efficient JSON Parsing with Functional Concepts 📄
- Calling a REST Api in Swift 📄
- How to Make REST API Calls and Parse JSON with Swift 📄
- HTTP in Swift 📄
- Reachability Library 📄
- JSON in Swift 🔌
- Functional JSON Parsing 🔌
- NSURLSession Basics 🔌
- Background Downloads 🔌
- An AlamoFire Router 🔌
- Moya: Network Abstraction Layer written in Swift ✏️
Web Services - Other
- CloudKit Introduction 🔌
- Create a Data Access Layer with SQLite.swift and Swift 2 🔌
- Using YapDatabase 🔌
- { JSON, Swift, and Type Safety } 💾
- MagicalRecord loves Swift 🎤
- Networking with Monads 📹
- Swift-MongoDB 📝