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
- 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
- Testing
- Text Manipulation
- Type Reflection and Casting
- Web Services and Networking
- Web Services - Other
- Interview Situations
- 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 π
- 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 π
- Crunchy Development π
- This Week in Swift News: Curated Swift News π°
- iOS Goodies π°
- iOS Dev Weekly π°
- Swift Sandbox Newsletter π°
- SwiftLang Website π°
- Swift Weekly π°
- Gettin' Swifty With It π°
- 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 πΎ
- 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 π
- 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 πΎ
- 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 π
- Generics in Swift, 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 π
- 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 βοΈ
- 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 βοΈ
- 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 π