A curated list of resources for learning about the Swift Language
- ๐ = Gist
- โ๏ธ = Repository
- ๐ = Blog
- ๐ = Blog Post
- ๐ = Quick Reference
- ๐ = Book
- ๐ = Guide Book
- ๐ฐ = Newsletter
- ๐พ = Slides
- ๐ค = Video Presentation
- ๐น = Video
- ๐ = Link
- ๐ฅ = Awesome List
- ๐ = Learning Resource
- ๐ = Interview Questions
- ๐ = Networking Related Post
- ๐ = Algorithm Related Post
- Open Source Swift
- Swift Style
- In-Browser Swift Editors
- Quick References
- Blogs
- Newsletters
- Great Learning Resources
- Free Books
- Not Free (but still awesome) Swift Books
- 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
- Concurrency
- Core Data
- Data Structures and Algorithms
- Design Patterns
- Development
- Enums and Pattern Matching
- Error Handling
- Extensions
- Functional Programming in Swift
- Functional Reactive Programming in Swift
- Generics
- 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
- String Manipulation
- Swift Language
- Testing
- Type Reflection and Casting
- Web Services and Networking
- Web Services - Other
- Interview Situations
- Contributing Guidelines
- 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 โ๏ธ
- Swift Packages โ๏ธ
- Swift Compiler Crashes โ๏ธ
- Functional Swift Style Guide ๐
- The Official Swift Language Docs ๐
- Swift Language Evolution ๐
- Swift.org ๐
- That Thing In Swift ๐
- SwiftDoc ๐
- iOS Cookies ๐
- ๐ฅ Awesome Swift ๐
- ๐ฅ Another Awesome Swift ๐
- Pure Swift List ๐
- ๐ฅ 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 ๐
- iOS at Artsy ๐
- ๐ Objc.io ๐
- NSBlog with Mike Ash ๐
- Use Your Loaf ๐
- Chris Eidhof ๐
- Ole Begemann ๐
- Uramio ๐
- Swift Weekly ๐
- Erica Sadun ๐
- ThinkAndBuild ๐
- MetalByExample.com ๐
- David Owens ๐
- The iOS Times ๐
- Crunchy Development ๐
- This Week in Swift News ๐ฐ
- iOS Goodies ๐ฐ
- iOS Dev Weekly ๐ฐ
- Swift Open Source Newsletter ๐ฐ
- SwiftLang Website ๐ฐ
- Swift Weekly ๐ฐ
- Gettin' Swifty With It ๐ฐ
- Indie iOS Dev Weekly ๐ฐ
- Official Swift Documentation ๐
- Swift Education Community Repository โ๏ธ
- iOS Swift Reference โ๏ธ
- Hacking With Swift ๐
- A Better way to learn Swift ๐
- Ray Wenderlich Tutorial Pages ๐
- Swift Education ๐
- Play with Swift ๐
- CS193P: Developing iOS 8 Apps with Swift ๐
- Realm Roundup: 25 Realm Resources and Tutorials ๐
- Funcitonal Reactive Programming iOS Learning Resources ๐
- Learn Core Data ๐
- Objc.io Book Series ๐
- Ray Wenderlich Book Series ๐
- Packt Publishing Book Series ๐
- Apress Book Series ๐
- Oreilly Book Series ๐
- All the slides from Swift Summit London 2015 ๐
- All the Presentations from Swift Summit London ๐น
- All Presentations from #Pragma Conference ๐น
- MobileKonf 2015 ๐น
- Functional Swift Conf 2014 ๐น
- Functional Swift Conf 2015 ๐น
- CocoaConf Videos ๐น
- ๐ฅ Awesome iOS Conferences โ๏ธ
- Swift Language Youtube Channel ๐น
- Free Swift Lang Course ๐น
- Explaining the mutating keyword ๐น
- Swift tutorial Video Series ๐น
- 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 ๐พ
- Cartography Autolayout DSL โ๏ธ
- Demystifying iOS Architecture Patterns ๐
- 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 ๐
- MVVM is not very good ๐
- 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 ๐
- Unidirectional Data Flow Architecture โ๏ธ
- 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 ๐
- Typesafe Associated Objects โ๏ธ
- Closures and Capturing Values in Swift ๐
- Instance methods are Curried Functions in Swift ๐
- Using Local Closures with Swift ๐
- Delaying Code Execution through Closures ๐
- Can we please make a standard style for closures? ๐
- A quick guide to SequenceType ๐
- Sequences and Generators in Swift ๐
- Experimenting with Seqs and Generators ๐
- 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 โ๏ธ
- 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 ๐
- Basics of GCD ๐
- Methods of concurrency โ GCD, agents, tasks and invocations ๐
- Code at the end of the queue ๐
- Actor Model Concurrency in Swift โ๏ธ
- Coroutines in Swift ๐
- STM in Swift โ๏ธ
- 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 ๐ค
- Core Data Threading Demystified ๐ค
- 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 โ๏ธ
- SwiftPriorityQueue โ๏ธ
- SwiftGraph โ๏ธ
- Fisher-Yates Shuffle for Swift ๐
- 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 ๐
- Result Driven Development ๐พ
- Library Oriented Programming ๐ค
-
- Oriented Programming ๐ค
- Hole Driven Development ๐
- Entering a New Codebase ๐พ
- Railway Oriented Programming ๐ค
- 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 ๐
- Handling Enums with Raw Values ๐
- Using Enums as Constants ๐
- Pattern Matching
- Official Docs ๐
- 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 ๐
- The Value of Guard ๐
- Swift 2.0: Why Guard is Better than If ๐
- Guard and Defer ๐
- When to (not) use guard ๐
- Thoughts on Swift 2 Error Handling ๐
- Easy Error Handing ๐
- Swift Failiable Initializers ๐
- Swift 2 Error Handling ๐
- Swift 2 Error Handling and Pattern Matching ๐
- 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 ๐พ
- Let it Throw! ๐
- Deriving higher order functions in Swift ๐
- Typelift Community Repo ๐
- ๐ Swiftz Functional Programming Library โ๏ธ
- Swiftx Functional Data Types โ๏ธ
- Aquifier Functional streaming abstractions in Swift โ๏ธ
- Basis Pure Declarative Programming in Swift โ๏ธ
- Functional Concurrency Primitives โ๏ธ
- 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 ๐
- Lenses in Swift ๐
- Lenses ๐ โ๏ธ
- 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 โ๏ธ
- 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 ๐พ
- State Monads in Swift โ๏ธ
- Array to Zipper โ๏ธ
- From Category Theory to Swift ๐ โ๏ธ
- Higher Kinded Types ๐
- Categories in Swift ๐
- Applicatives in Swift โ๏ธ
- Church Encoding ๐
- Lambda Calculus in Swift 2 ๐
- 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 ๐
- State, Promises, and Reactive Programming ๐ค โ๏ธ
- State Machines in Swift โ๏ธ
- Generic Arrays in Swift 2.0 ๐
- The shortcomings of generic protocols ๐
- Generics in Swift, Part 1 ๐, Part 2 ๐
- Official Docs ๐
- Swift Initializers ๐
- Immutable Swift ๐
- What's the point of Laziness? ๐
- IBOutlet Style in Swift ๐
- 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 โ๏ธ
- Comparing Swift and Javascript ๐
- C++ Advice to Swift Devs ๐
- Swift Protocols vs Java 8 Interfaces ๐
- Building for Open Source ๐พ
- Swift Android โ๏ธ
- Swift Version Manager โ๏ธ
- Docker Swift โ๏ธ
- Open Radar Swift ๐
- How to run Swift within a Docker container ๐
- Operator Overloading and JSON Parsing in Swift ๐
- Optionals
- Types
- Swift's Type System ๐
- Typeclasses in Swift, Haskell and Scala ๐
- Understanding Downcasting Operators in Swift ๐
- Swift Manual Retain/Release ๐
- Make a DSL in Swift ๐
- Type-Erased Wrappers in Swift ๐ค
- Swift MetaTypes ๐
- Tying the Knot in Swift ๐
- Make all Value Types Equatable ๐ค
- The Natural Numbers Encoded as Types ๐
- @autoclosure, @inline, @noescape, and @noreturn Keywords ๐
- How to use @noescape ๐
- How to use @autoclosure ๐
- Magic Methods in Swift ๐
- weak vs unowned ๐
- Swift weak references ๐
- Difference between weak self vs weak self() ๐
- Creating and Building a DSL in Swift ๐พ
- ๐ FizzBuzz on steroids with Swift ๐พ
- Learning Swift the Euler Way ๐ค
- Swift in Practice ๐ค
- How Carthage works ๐พ
- Bottom Up Programming in Swift ๐ค
- Make a Cocoapods Framework ๐ค
- Lessons from Production Swift ๐พ
- Using the Swift Package Manager ๐
- Exclude folders in the SPM ๐
- ๐ Protocol-Oriented Programming in Swift ๐ค
- 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 ๐
- 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 โ๏ธ
- 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 ๐
- Swift String Cheat Sheet ๐ ๐
- RegularExpressions in Swift ๐
- Creating a Lexer in Swift ๐
- Creating an Abstract Syntax Tree Parser in Swift ๐ ๐
- String to Number Parser โ๏ธ
- Madness: Parsing strings in simple context-free grammars โ๏ธ
- NSRegularExpression Cheat Sheet ๐
- Parser combinators, for Swift โ๏ธ
- Clean Regular Expressions in Swift ๐
- 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 ๐พ
- Swiftly Methods ๐
- Function Params are Tuples in Swift ๐
- Better Unit Testing with Swift ๐
- UI Testing Cheat Sheet ๐
- SwiftTest BDD Testing Framework โ๏ธ
- More functional testing ๐
- Unit Testing with @testable in Xcode 7 ๐
- Mocking Objects in Swift ๐
- Reverse Engineering iOS Apps ๐ค
- TDD on iOS ๐ค
- The state of iOS testing in 2015 ๐
- Testing in Swift with Quick ๐ค
- Network Testing in Swift ๐ค
- Testing View Controllers with Quick ๐ค
- TDD By Controlling Dependencies in Swift ๐ค, ๐ค
- iOS Snapshot Test Cases โ๏ธ
- Quick Testing Framework โ๏ธ
- Nimble Matcher Framework โ๏ธ
- Swift Lint โ๏ธ
- How to configure Travis CI for iOS Testing ๐
- Setting up KIF for iOS Acceptance Testing ๐
- Replacing KIF with XCUI Tests ๐
- SwiftCheck: QuickCheck for Swift โ๏ธ
- Simple Reflection in Swift ๐
- Understanding Reflection in Swift and how to use it ๐
- Typecasting and the Swift Runtime ๐
- 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 ๐
- Swift and JSON: Are we doing it right? ๐ค
- 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 โ๏ธ
- 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 โ๏ธ
- Ray Wenderlich ๐
- Toptal ๐
- LeetCode ๐
- Coding Questions ๐
- ๐ฅ Awesome Swift Interview Questions ๐
- ๐ฅ Awesome iOS Interview Questions ๐
Let this list serve as a huge thank you to the incredible Swift Community. It would not exist if the people behind Swift were not so incredibly innovative, intellectual, and enthusiastic about the language and about open source. If you would like to contribute to this list, make sure to check out the enoji key and please open up a pull request or send a tweet of the content to @FeelFunnyFlow. I realize that this list is by no means perfect, so if you have an idea as to how I can change it, please let me know!