/Awesome-Swift-Education

All the resources for Learning About Swift

Primary LanguageSwiftMIT LicenseMIT

Swift Logo

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

  • 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

  • The Official Swift Language Docs 📖
  • Swift Language Evolution 📖
  • Swift Language Philosophies 📖
  • Swift Lang F.A.Q. 📖

In-Browser Swift Editors

  • IBM Swift Sandbox 🔗
  • SwiftStub 🔗
  • Try Swift in the Browser 🔗

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

  • Learn Swift 📚
  • Swift for Programmers 📚

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

  • Closures and Capturing Values in Swift 📄
  • Instance methods are Curried Functions in Swift 📄

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

  • MVVM + FRP 📄
  • Introduction 📄
  • Reacting to Events 📄
  • ReactiveCocoa 4.0 Info 🔗
  • 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

  • Swift Initializers 📄
  • Immutable Swift 📄
  • What's the point of Laziness? 📄
  • IBOutlet Style in Swift 📄

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

  • Comparing Swift and Javascript 📄
  • C++ Advice to Swift Devs 📄
  • Swift Protocols vs Java 8 Interfaces 📄
  • Learning Swift from Haskell 💾 and corresponding 🎤
  • Swift vs Golang 💾

LLVM Compiler

  • Swift Intermediate Language 💾
  • Using the LLVM API With Swift 📄
  • LLVM and Swift 🎤
  • Swift Performance 💾
  • Swift 2 Under the Hood 💾

Objective C Transitioning to Swift

  • Method Swizzling in Swift 📄
  • A Eulogy for Objective C 🎤
  • The best of Obj-C to Swift 🎤

Open Source Swift

  • Booleans 📄
  • Swift Open Source Overview 📄
  • Open Source Swift 3.0 Roadmap 📄
  • Building for Open Source 💾

Operator Overloading

  • Operator Overloading and JSON Parsing in Swift 📄

Opinions about Swift

  • Wishlist for Swift 3.0 📄
  • What are the Worst parts of Swift? 📄
  • The Death of Cocoa 📄

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

  • Encryptor / Decryptor Data Format ✏️
  • CommonCrypto in Swift 🎤
  • 🔥 Awesome iOS 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 📄
  • Advanced Type Safety in Swift 💾, and corresponding 🎤

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 📝

Interview Situations

  • Ray Wenderlich 📋
  • Toptal 📋
  • LeetCode 📋
  • Coding Questions 📋
  • iOS Dev interview questions 📋
  • Macroscopic iOS interview questions 📋
  • 🔥 Awesome Swift Interview Questions 📋
  • 🔥 Awesome iOS Interview Questions 📋
  • From a FB Group 📋