Skip to content

greg3z/Awesome-Swift-Education

 
 

Repository files navigation

Awesome-Swift-Education Awesome Build Status

There is no royal road to Swift. —Euclid

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 ✏️
  • Swift Packages ✏️
  • Swift Compiler Crashes ✏️

⬆️

Swift Style

  • No Single Swift Style 📄
  • Functional Swift Style Guide 📖
  • The Official Swift Language Docs 📖
  • Swift Language Evolution 📖 📖

⬆️

In-Browser Swift Editors

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

⬆️

Quick References

  • Other Awesome Lists
    • 🔥 Awesome Swift Playgrounds 📜
    • 🔥 Awesome iOS 📜
    • 🔥 Awesome Swift 📜
    • 🔥 Another Awesome Swift 📜
    • 🔥 Awesome Functional Programming 📜
  • Swift.org 📜
  • Every Operator in Swift 📜
  • That Thing In Swift 📜
  • SwiftDoc 📜
  • iOS Cookies 📜
  • Pure Swift List 📜
  • iOS Good Practices 📜
  • Little Bites of Cocoa 📜
  • Libraries used in the top 100 Apps 📜
  • Fucking Closure Syntax 📜
  • RAC Marbles 📜
  • Swift Knowledge Base 📜
  • Every Single Option and Swift Compiler Flag 📜
  • Useful Swift .gitignores 📝

⬆️

Great Learning Resources

  • 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 🎓
  • Udacity Swift Syntax Course 🎓
  • Open Source iOS Apps ✏️

⬆️

Books

  • Free Books
    • The Swift Programming Language 2.2 📚
    • Learn Swift 📚
    • Swift for Programmers 📚
    • iOS 9 Programming Fundamentals with Swift 📚
    • Swifter Tips 📚
  • Not Free (but still awesome) Swift Books
    • Objc.io Book Series 📚
    • Ray Wenderlich Book Series 📚
    • Packt Publishing Book Series 📚
    • Apress Book Series 📚
    • Oreilly Book Series 📚
    • Your First Swift App 📚

⬆️

Video

  • Presentations
    • 🔥 pomo.tv Presentations from all of the events 🎤
    • WWDC 2015 Presentations 🎤 ✏️ 📝
    • 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 ✏️
    • All Presentations from 360iDev 2015 📹
    • NSSpain 2015 interviews 📹
  • Other Video
    • Cocoaheads.tv 📹
    • Swift Language Youtube Channel 📹
    • Free Swift Lang Course 📹
    • Swift tutorial Video Series 📹

⬆️

Swift Community

  • Blogs
  • Newsletters
    • 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 📰
    • Swift Dev Weekly 📰
    • Thomas Hanning 📰
  • Forums
  • Jobs
  • Meetups
    • Meetup.com Swift Meetups 🔗

⬆️

Swift Posts

Closures and Higher Order Functions

  • Coming Changes for the Function Currying Syntax in Swift 3.0 🔗 📄
  • 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? 📄
  • @autoclosure, @inline, @noescape, and @noreturn Keywords 📄
  • How to use @noescape 📄
  • How to use @autoclosure 📄
  • Closures in API Design 🎤
  • weak vs unowned 📄
  • Swift weak references 📄 📄
  • Difference between weak self vs weak self() 📄
  • Partial Function Application 📝
  • Trailing Closure Syntax 📄 📄 📄 📄
  • Type inference quirks of closures as parameters 📝
  • Style guide for functions with closure parameters in Swift 📝
  • Using Higher Order Methods Everywhere 📄
  • Swift capture lists 📄
  • Why is n-arity currying not possible? 🔗

⬆️

Collections / Sequences / Generators

  • A quick guide to SequenceType 📄
  • Swift Collections 📄
  • 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 ✏️
  • SINQ - Swift Integrated Query ✏️
  • List Comprehension in Swift 📄
  • Collection Indices, Slices, and Generics 📄
  • Generic Collections, SubSequences and Overloading 📄
  • Custom Subscripts in Swift 📄
  • A better Hashable 📄
  • How arrays are implemented in Swift 📄 📄 📝
  • Dictionaries in Swift 📄
  • for-in secrets 📄
  • Replacing Ranges in an Array∂ 📄
  • Sequence Conformance 📄
  • AnyObject Subscript 🔗
  • Exploring Swift's Dictionary Implementation 📄

⬆️

Command Line and Swift Scripting

  • Swift Scripting 🎤 ✏️
  • Learn Swift by running Scripts 📄
  • Scripting in Swift is Pretty Awesome! 📄
  • How Swift Scripting was used to make iOS Cookies 📄
  • Writing an Xcode Plugin with Swift 📄
  • Make Command Line Applications with Swiftline 📄

⬆️

Concurrency

  • 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 ✏️
  • NSOperations and NSOperationQueues 📄
  • Threading with Closures 📄
  • Building Responsive and Efficient Apps with GCD 🎤 💾
  • Locking in Swift 📄
  • Custom Threading Operator 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 📝 🔗
  • Contiguous Arrays in Swift 📄
  • NSArrays are implemente with Circular Buffers 📄
  • Open sourced CFArray 🔗
  • Abstract Algebraic Structures in Swift 2 ✏️
  • Trees 📝
  • Patricia/Radix trees for Swift ✏️
  • Evolutionary/Genetic Programming in Swift ✏️ ✏️
  • Finger Trees in Swift ✏️
  • Neural Networks in Swift ✏️
  • Swift AI ✏️
  • Naive Bayes Classifier ✏️
  • 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 📝
  • Rose Tree in Swift 📝
  • Generic Stack in Swift 📝 📄
  • Deep learning with Swift ✏️
  • HackerRank Solutions in Swift ✏️
  • Abstract Binding Trees 📝
  • Commonly used data structures and algorithms ✏️ ✏️
  • Write a Generic Stable Sort ✏️
  • Either Types micro-framework ✏️
  • Calkin–Wilf tree in Swift 📄
  • Algorithms by CosmicMind ✏️

⬆️

Date Programming

  • Swiftly getting a human-readable date with NSDateFormatter 📄

⬆️

Design Patterns and AntiPatterns

  • AntiPatterns
    • Avoid Partial Functions 📄 📄
    • Avoid 7 Swift Snares 📄
  • Design Patterns
    • Swift Design Patterns 💾
    • Template Method Pattern in Swift 📄
    • Strategy Pattern in Swift 📄
    • Design Patterns Library in Swift 📄
    • Command Pattern in Swift 📄
    • Adapter Pattern in Swift 📄
    • Lazy Properties + Builder Pattern 📄
    • 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 📄 📄 ✏️ ✏️
    • Facade Functions 📄
    • Swift Singleton ✏️
    • SOLID Design in Swift ✏️
    • Decorator Pattern through composing functions in Swift 📄
    • Target Action Pattern 📄
    • Typed Notification Observers 📄
    • Functional Notification Pattern 📄
    • Calling a Swift class factory method with leading dot notation? 🔗
    • Making Abstract Classes in Swift 📄
    • Allergies and Dependency Inversion 📄
    • The Law of Demeter and the 9th Circle of Hell 📄

⬆️

Development Paradigms

  • Type Driven Development 🎤 💾
  • Result Driven Development 💾
  • Library Oriented Programming 🎤
    • Oriented Programming 🎤
  • Hole Driven Development 📄
  • Entering a New Codebase 💾
  • Railway Oriented Programming in Swift 📄 🎤
  • Enum Oriented vs Protocol Oriented Programming ✏️
  • Swift in Practice 🎤 💾
  • Denotational Design 💾
  • Building Frameworks in Swift 📄
  • Object Oriented Functional Programming 🎤

⬆️

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 📄
    • Handling Enums with Raw Values 📄 💾
    • Using Enums as Constants 📄
    • Enums instead of Booleans 📄
    • Enum vs String Type 📄
    • Enum Driven View Controllers 📄
    • Swift Enums: Initialization with Associated Values from a Server Response 📄
    • Sad State of Enums 📄
    • Swift Algebraic Data Types 📄
    • Create an enum with rawvalue type of closures :page_fcaing_up:
    • Immutable Enumeration in Swift 📄
    • The Types of Data in Swift 📄
  • 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 📄
    • Pattern Matching with an if case 📄
    • Pattern Matching with Recursive Values in Swift 📄 📝
    • What is value binding? 📄

⬆️

Error Handling

  • The Value of Guard 📄 📄
  • Guard and Defer 📄
  • Defer in Swift 📄
  • When to (not) use guard 📄 📄 RE 📄
  • Easy Error Handing 📄
  • Swift Failiable Initializers 📄
  • Swift 2 Error Handling 📄 📄 📄 📝
  • 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! 📄
  • Magic Methods in Swift 📄
  • Understanding Optional Chaining 📄
  • 'do' or die 📄
  • try, catch, do and throw 📄
  • Throws is like an Either Type 🔗
  • Rethrows in Swift 2 📄
  • Throwing vs failing vs crashing vs bool 📄
  • Using Swift Throws with Completion Callbacks 📄
  • Testing Swift's ErrorType 🎤

⬆️

Extensions

  • ExSwift ✏️
  • Useful Swift Extensions ✏️
  • EZSwiftExtensions ✏️
  • Public Extension 📓
  • Adding Class Properties via Extension 📄
  • Type Constrained Extensions in Swift 📄
  • Generic type extension by retrofitting protocols in Swift 2 📄
  • Type extensions with generic type parameters 📄
  • OptionalExtensions ✏️

⬆️

Functional Programming, Category and Type Theory

  • Category and Type Theory
    • Key terms in Category Theory 📄
    • Category Theory for Programmers 📖
    • Cheat Sheet For Typeclasses and Monads in Haskell 📜 📜 📄
    • Category Theory For Beginners 💾 💾
    • Category Theory and Progamming 🎤
    • Awesome Math/Category Theory 📝
    • Category Theory in Haskell 📄
    • The Category Design Pattern 📄
    • Type Theory vs Category Theory 📄 📄
    • MIT Category Theory Class 🔗
    • Functional Programming, Abstraction, and Naming Things 📄
    • Most amazing def of monads 🔗
  • Functional Programming in Swift
    • Declarative Programming
      • Proof in Functions 📄 📄 📄
      • Functional Thinking 💾
      • 6 Killer Functional Swift Features 📄
      • Functional Programming in the Swift Language 📄
      • Writing Compelling Functional Code with BananaKit 🎤
      • Practical Declarative 💾 and Functional 💾 Swift
      • 7 Habits for more functional Swift 💾 📝
      • Writing Pipe operators in Swift 📄
      • Reccomended Functional Operators in Swift 📝 📄 📝
      • Point-Free Style Swift 📄
    • Immutable State
      • Immutable Swift 📄
      • Dodging State 📄
    • Map / Filter / Reduce
      • Reduce all the things 📄
      • Map and FlatMap demystified 📄 📄
      • Understanding Reduce in Swift 📄
      • Deriving higher order functions in Swift 📄
      • Reduction in Force 📄
    • Recursion and Infinite Streams
      • Does Swift implement tail call optimization? and in mutual recursion case? 🔗 🔗
      • (Tail)Recursion with nested functions in Swift 2.0 📄 📄 📝
      • Continuation Passing Style in Swift 📄 📄
      • Tying the Knot in Swift 🔗
      • FizzBuzz with infinite streams 📄
      • Functional Memoization in Swift 📄 📄 📝
      • Aquifier Functional streaming abstractions in Swift ✏️
      • Lazy infinite streams ✏️
      • Better Recursion with Swift 🎤 💾
      • Memoization in Swift 🔗
    • Lambda Calculus
      • Church Encoding 📝
      • Lambda Calculus in Swift 2 📝
      • Programming is Mathematics 📄
      • Llama Calculus 💾
    • Functors and Applicatives
      • Various Functors in Swift 📄
      • Are true functors possible in Swift? 🔗 🔗
      • Functors, Applicatives, and Monads in Swift 📄 🔗
      • Functional JSON Parsing 📄 📄
      • No Real Functors 📄
      • Functor & Friends: Protocol + Tests 📄
      • How I learned to stop worrying and love the functor 🎤 💾
    • Arrows
      • Arrows in Swift 📝
    • Monads
      • infix Operators for Monadic Functions in Swift ✏️
      • Monads & C# Tasks in Swift 📄
      • Swift Adventures in Monad Land ✏️
      • Paragons Of Perfunctory Programs 📄
      • Networking with Monads and into to Transformers 🎤
      • "var" is the State monad 📄
    • Monoids
      • Monoid Library ✏️
      • Swift's lack of Monoids 📄
      • Monoid with Dual and Writer 📝
    • Folds, Zippers, and Lazy Lists
    • Promises / Futures
      • A simple Promise in Swift 📝
      • PromiseKit Promise Library ✏️ 🔗
      • FutureKit Repostory ✏️
      • BrightFutures Repository ✏️
      • Back to the Futures with Swift 🎤 💾
      • Futures and Latency as an effect in Swift 📄 💾
    • Combinators
    • Lenses, Transducers, Reducers
      • Functional Programming with Bananas, Lenses, Envelopes, and Barbed Wire 📝
      • Lenses in Swift, or how to change parts of immutable objects 📄
      • Lenso ✏️
      • Covariance and Contravariance in Swift 2.1 📄 📄
    • Categories
      • Yoneda Embedding 📝
    • Other
      • 🙌 Swiftz Functional Programming Library ✏️
      • Second Bridge Swift Functional Framework ✏️
      • Swiftx Functional Data Types ✏️
      • Basis Pure Declarative Programming in Swift ✏️
      • Functional Concurrency Primitives ✏️
      • Functional View Controllers 📄 📝
      • Prelude Library 📄
      • Funky Functional Programming Tools and Experiements ✏️
      • Dollar.Swift Functional Toolkit like Lodash and Underscore ✏️
      • SwiftLand MicroFramework ✏️

⬆️

Functional Reactive Programming in Swift

  • FRP
    • Why FRP 📄
    • FRP in Swift 2.0 🎤
    • Functional Reactive Programming in an Imperative World 🎤
    • FRP is a forbidden term 📄 📄
    • What is FRP? On StackOverflow 📄
    • State, Promises, and Reactive Programming 🎤 ✏️
    • Functional Reactive Programming on iOS 💾
    • Delta Library for managing state 📄
    • Functional Reactive Intuition 📄
  • MVVM
    • Modern application architectures (Reactive programming, MVVM and beyond) 📄
  • RAC
    • Introduction 📄
    • Reacting to Events 📄
    • ReactiveCocoa 4.0 Info 🔗
    • RAC 3 with Ash Furrow 💾, and some other nice 💾
    • FRP with RAC in Swift 💾
    • MVVM + Rac 4 ✏️
    • RAC Schedulers 📄
    • RACNest: RAC + MVVM Examples ✏️
  • Rx
    • Functional Rective Programming with RxSwift 💾
    • The Difference between RxSwift and ReactiveCocoa 📄 📄 📄
    • Learning RxSwift 🔗
    • Upgrading to RxSwift 📄
    • RxSwift Community Webpage 🔗

⬆️

Generics

  • Generic Arrays in Swift 2.0 📄
  • The shortcomings of generic protocols 📄
  • Generics in Swift, Part 1 📄, Part 2 📄
  • Official Docs 📝
  • Covariant and contravariant generic type parameters 🔗
  • Generic Protocols 📄
  • Partial Function Application with Generics 🔗
  • Generic Constructors 🔗 and factories 🔗
  • Parametric Polymorphism in Swift 📄 📄 📄
  • Template Metaprogramming Swift 📄
  • Generic Typealias in Swift 📄
  • Swift “where” keyword 🔗
  • Protocol Generics Self 📝

⬆️

Initializers, Properties, and Dependency Injection

  • Initializers
    • Swift Initializers 📄
    • Be Mindful of Your Filters 📄
    • Swift Initialization and the Pain of Optionals 📄
    • initializers for Structs 📄
    • Swift init() 📄
    • Public Getter, Private Setter 📄
    • Why is the convenience keyword needed in Swift? 🔗
    • When should I use deinit? 🔗
  • Properties
    • Property Observers 📄
    • IBOutlet Style in Swift 📄
    • Lazy Properties in Structs 📄
    • Class Properties in Swift 📄
    • Stored Properties 📄
    • Named Parupameters 📄
    • Intuition behind the Swift external/local parameter system 📄
    • Swift named parameters 📄
    • Beware of Computed Properties 📄
    • How to use swift computed properties 📄
    • Property Observers and Lazy Properties 📄
  • Dependency Injection
    • Swift Injection Wesite 🔗
    • You Used To Inject Me In Your Constructor 💾
    • Swift Inject Dependency Injection ✏️
    • How to Dependency Inject on iOS 🎤
    • Dependency Injection in Swift 📄 📄 📄
    • Dependency Injection with a Custom Initializer 📄

⬆️

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 ✏️
  • Mapping Swift Types to C Pointers 📄
  • C Callbacks in Swift 📄
  • Wrapping Objc Frameworks in Swift 💾
  • Swift Interop 🎤
  • char ** in Swift 📄
  • Casting Swift objects to Objective-C types 📄

⬆️

Language Comparisons and Transitioning to Swift

  • Comparisons
    • Haskell Overlords 📄
    • Comparing Swift and Javascript 📄
    • C++ Advice to Swift Devs 📄
    • Swift Protocols vs Java 8 Interfaces 📄
    • Learning Swift from Haskell 💾 and corresponding 🎤
    • Functional Programming like Haskell 💾 🎤
    • Swift vs Golang 💾
    • Swift 2.0 Protocol Extensions vs Java Abstract Classes 🔗
    • What do Haskell developers think of Swift? 🔗
    • A Swift intoduction to Haskell 💾
    • Swift For Rubyists 🎤
    • Swift vs Scala 💾
    • OCaml's Deferred in Swift 📄
    • Pythonic Swift ✏️
    • Hindley-Milner languages 🔗
    • Is Swift a viable alternative to C++ for performance critical code? 📄
    • Swift vs C speed test 📄 📄 📄
    • Swift vs Java Performance 📄
    • Go vs Node vs Rust vs Swift 📄
  • Transitioning from ObjC
    • Method Swizzling in Swift 📄
    • How to Method Swizzle in Swift 📄
    • A Eulogy for Objective C 🎤
    • The best of Obj-C to Swift 🎤 📄

⬆️

Linux Development

  • Intro to Swift Dev on Linux 📄
  • Dynamic Swift Framework Without Xcode 📄
  • Foundation on Linux 📄
  • NSLinux Strings ✏️
  • interact with Linux GPIO/SPI on ARM ✏️

⬆️

LLVM Compiler, ARC, SIL, and swiftc

  • LLVM Compiler
    • WWDC 2014: What's new in LLVM 🎤 💾
    • LLVM by Chris Lattner 📄
    • Swift Intermediate Language 💾
    • Using the LLVM API With Swift 📄
    • LLVM and Swift 🎤
    • Swift Performance 💾
    • Swift 2 Under the Hood 💾
    • Swift Compiler Diagnostics 📄
    • LLVM in Swift: Setup 📄
    • Kaleidoscope: Implementing a Parser and AST in LLVM 📄 ✏️
  • ARC
    • Swift Manual Retain/Release 📄
  • swiftc
    • Explorign SIL and swiftc 📄
    • swift vs swiftc 📄
    • SIMD (Single Instruction Multiple Data) 📄
    • @convention 📄
    • Introspecting Swift 💾
    • Unsafe Swift 💾
    • Type Introspection 📄
    • The mysterious builtin module 📄

⬆️

Optionals and Types

  • Optionals
    • How I handle Optionals in Swift 📄
    • How to unwrap an optional in 9 different ways 📄
    • Optional Protocol Methods in Pure Swift 📄
    • Swift Optionals Made Simple 📄
    • Every Kind of Optional 📄
    • Pervasive use of Optional in Swift is penance for nil 📄
    • Optionals under the hood 📄
    • Nil coalescing operator 📄
  • Types
    • Value and Reference Types
      • Weak, Strong, Unowned 💾
      • Making Friends with Value Types 🎤
      • Make all Value Types Equatable 🎤
      • Safer Swift Code With Value Types 🎤
      • Every Swift Value Type Should be Equatable 📄
      • When to use mutating functions in swift structs 📄
      • Is Swift Pass By Value or Pass By Reference 🔗
      • How can I make a weak protocol reference in 'pure' Swift (w/o @objc) 🔗
      • When to use weak pointers with delgates 🔗
      • Mutating Funcs in Swift Structs 📄
    • Abstract Types
      • Understanding Abstract Types 📄
    • Wrapper Types
      • Wrapper Types 📄
      • Type-Erased Wrappers in Swift 🎤
    • Phantom Types
      • What are Phantom Types good for? 📄
    • Dependent Types
      • Dependent Types in Swift 📄 and why they matter 📄
      • Can Swift have Dependent Types? 📝 📄
      • More Misunderstanding of Dependent Types 📄
      • An implementation of a dependently-typed intermediate language ✏️
      • Dependent Types: I'm missing something 📄
      • Backwards Dependent Types 📄
      • Type-Level Assertions (or, almost-dependent types) 📝
    • Nested Types
      • Lazy Nested Types 📄
    • 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 🎤
      • Why doesn't Swift have implicit type conversion? 📄
      • as? vs as! 📄
      • Understanding Downcasting Operators in Swift 📄
      • Type check with switch statements 📄
    • Associated Types
      • 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 ✏️
    • Metatypes
      • Types and Metatypes in Swift 📄
      • Higher Kinded Types 📝 📄 📄 🔗
      • Swift MetaTypes 📄
      • Typeclasses in Swift and Scala 📄
      • Creating new Types in Swift 📄
      • What is ExistentialMetatype in Swift 📄
    • Typeclasses
      • Typeclasses in Swift, Haskell and Scala 📄
    • Type Inference
      • Implicit Member Expression 📄
      • Referential Transparency 🔗
    • Other
      • Swift's Type System 📄
      • The Natural Numbers Encoded as Types 📄
      • Return Type Polymorphism in Swift 📄 🔗

⬆️

Production Swift, Problem Solving, and Developer Tools

  • Production Swift
    • 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 📄
    • How to run Swift within a Docker container 📄
    • Swift, Frameworks & Modules, Learnings from CocoaPods 📄
    • BuddyBuild Continuous Integration 🔗
    • Swift Package Manager 💾
    • Naming assets 📝
    • Xcode Snippets ✏️
  • Problem Solving with Swift
    • 🙌 FizzBuzz on steroids with Swift 💾
    • Learning Swift the Euler Way 🎤
    • FlappySwift ✏️
    • Parallel Mandelbrot Set in Swift 📄
  • Developer Tools
    • Alcatraz Master Repository ✏️
    • Exploring Graph Theory with OmniGraffle and Swift 📄
    • Continuous Delivery with Fastlane 🎤
    • Ship C code with swift packages using swift package manager 📄
    • Jazzy Docs 📄 💾
    • Cocoa Layout Instrument 📄
    • IBAnimatable ✏️
    • VVDocumenter ✏️
    • Analytics workflow in Swift ✏️
    • Profiling Swift Tool 📄
    • Profiler formatter xcpretty ✏️
    • Atom Swift Debugger ✏️
    • Anarchy Swift Build Tools ✏️

⬆️

Protocols

  • Swift Comparison Protocols 📄

⬆️

Protocol Oriented Programming in Swift 2

  • 🙌 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 📄
  • 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 📄
  • Protocol Oriented Programming through UIKit 📄
  • Protocols in Swift 📄
  • Ray Wenderlich intro to POP 📄
  • 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 📄
  • 55 Standard Library Swift Protocols 💾 📄 🎤
  • Current Recommmended Protocol Usage 📄
  • POP in Swift vs ObjC and C++ 📄
  • POP Utility Belt ✏️
  • Typesafe and Composable Data Sources in Swift 📄
  • Protocol Extension Method Dispatch 📄
  • The Genius of Protocols 📄
  • Properties of Types Conforming to Protocols 📄
  • Princess POP 📄

⬆️

Security

  • Encryptor / Decryptor Data Format ✏️
  • CommonCrypto in Swift 🎤
  • 🔥 Awesome iOS Security 🔗
  • Ceaser Cipher in Swift 📄 📄
  • Swift-ly secure 🎤
  • Common Crypto 📄

⬆️

Server Side Swift

⬆️

String Manipulation and RegEx

  • Strings
    • Swift String Cheat Sheet 📄 📝
    • How is the String type implemented? 📄
    • Useful String Library ✏️
    • Symbology in Swift 📄
    • Functional String Ranges 📄
    • ICU Text Transforms in Cocoa 📄
  • Regular Expressions
    • 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 📄
    • Simple Regex 📝
    • Verbal Expressions style RegEx ✏️

⬆️

Swift Language, Open Source, and Opinions

  • About Swift
    • WWDC 2014: Advanced Swift 🎤 💾
    • What's new in Swift 2 🎤 💾
    • Diving into Swift 2 📄
    • 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 🎤
    • Catching up with Swift 💾
    • Idiomatic Swift 💾
    • Swiftly Methods 📄
    • Improving your Existing Apps with Swift 💾
    • Other Swift Attributes you may not have heard of 📄
    • How Swift makes clean code 📄
    • % of top 100 apps using Swift 📄
    • 10 Swift One Liners To Impress Your Friends 📄
    • Hipster Swift 📄
    • @available 📝
    • Namespaces in Swift 📄
  • Open Source Swift
    • Swift Brief 📓
    • Booleans 📄
    • Swift Open Source Overview 📄
    • Open Source Swift 3.0 Roadmap 📄
  • Opinions about Swift
    • Wishlist for Swift 3.0 📄
    • The Death of Cocoa 📄
    • Swift is not functional 📄 📄
    • Which features overcomplicate Swift? What should be removed? 📄
    • Does Apple Swift have enough functional features to be considered as a functional language? Why? 📄
    • What is the bare minimum you need to learn Swift? 📄
    • How flexible is Swift? 📄
    • Top 10 iOS Swift libraries every iOS developer should know about 📄

⬆️

Testing Swift Code

  • Unit Testing
    • Better Unit Testing with Swift 📄
    • Unit Testing in Swift 📄 📄
    • Unit Testing with @testable in Xcode 7 📄 📄
    • Understanding testability in Swift 2 📄
    • The good parts of XCTest 📄
    • QuickCheck made in Swift 📄
    • Test callbacks with XCTests 📄
  • TDD
    • TDD with Swift 📄
    • TDD By Controlling Dependencies in Swift 🎤, 🎤
    • TDD on iOS 🎤
  • BDD
    • BDD Testing with Swift 📄
    • SwiftTest BDD Testing Framework ✏️
    • Intro to Quick and Nimble 📄
  • UI Testing
    • UI Testing Cheat Sheet 📄
    • Replacing KIF with XCUI Tests 📄
  • Debugging
    • View Debugging in Xcode 📄
    • WWDC 2014: Introduction to LLDB and Swift REPL 🎤
    • Swift Debugging Tips 📄
    • WWDC 2014: Advanced Swift Debugging with LLDB 🎤 💾
    • Chisel LLVM Debugging ✏️
  • Network Testing
    • Network Testing in Swift and DVR 🎤 📄
    • Unit Testing Core Data Model Layers 📄
  • Snapshot Testing
    • iOS Snapshot Test Cases ✏️
  • Profiling
    • Profiling in Depth 🎤 💾
    • WWDC 2014: Improving you app with instruments 🎤 💾
    • Finding memory leaks with instruments 📄
  • Other
    • More functional testing 📄
    • Mocking Objects in Swift 📄
    • Reverse Engineering iOS Apps 🎤
    • The state of iOS testing in 2015 📄
    • Testing in Swift with Quick 🎤 🎤
    • Quick Testing Framework ✏️
    • Nimble Matcher Framework ✏️
    • How to configure Travis CI for iOS Testing 📄
    • Setting up KIF for iOS Acceptance Testing 📄
    • SwiftCheck: QuickCheck for Swift ✏️

⬆️

Web Services, JSON, Routing, REST, and Networking

  • Networking
    • SwiftHTTPStatusCodes 📝
    • Calling a REST Api in Swift 📄
    • How to Make REST API Calls and Parse JSON with Swift 📄
    • HTTP in Swift 📄
    • Reachability Library 📄
    • NSURLSession Basics 📄 📄 📄
    • Background Downloads 📄
    • An introduction to using Alamofire 📄
    • Moya: Network Abstraction Layer written in Swift ✏️
    • Network data as a Struct 📄
  • JSON
    • Functional JSON Parsing with Tyro ✏️
    • { JSON, Swift, and Type Safety } 💾
    • JSON in Swift 📄
    • Functional JSON Parsing 📄
    • Swift and JSON: Are we doing it right? 🎤
    • Calling APIs and Parsing JSON with Swift 📄 📄
    • Parsing Embedded JSON and Arrays in Swift 📄
    • Real World JSON Parsing 📄
    • Efficient JSON Parsing with Functional Concepts 📄
    • Operator Overloading and JSON Parsing in Swift 📄
    • Swift JSON ✏️
  • Routing
    • An AlamoFire Router 📄
  • Web Services
    • CloudKit Introduction 📄
    • Create a Data Access Layer with SQLite.swift and Swift 2 📄
    • Using YapDatabase 📄
    • MagicalRecord loves Swift 🎤
    • Swift-MongoDB ✏️
    • Caramel brings powerful, expressive I/O to Swift 🎤

⬆️

iOS Programming with Swift

Animations and Front End Stuff

  • Mixing SpriteKit with UIKit in iOS 9 📄
  • AdaptiveUI Animations 🎤
  • iOS Animations with AutoLayout 🎤 and ✏️ 📄
  • 3D Graphics with Metal in Swift 🎤
  • Metal and Swift 🎤
  • Animating VCs 📄
  • Advanced UITableViews 🎤 📄
  • SpriteKit as an intro to SceneKit 💾
  • Cartography Autolayout DSL ✏️
  • UITableView Configuration Values 📄
  • Typed TableViewControllers 📄 📄 📝 📄
  • Transition Treasury Lib ✏️
  • UIKit for the Mac, rewritten in Swift ✏️
  • Did Apple implement UIKit and Cocoa classes "Obj-C on Swift" 📄
  • Why use SpriteKit? 📄
  • Advanced Collection Views 💾
  • Animations with CAReplicationLayer 📄
  • Core Image Blog 📓
  • Building a hamburger button transition 📄

⬆️

Application Structure / Architecture

  • Model View Whatever
    • Demystifying iOS Architecture Patterns 📄
    • Stateful View Controller ✏️
    • An MVP Framework ✏️
    • Designing App Infrastructure 📄
  • Massive View Controllers
    • Refractor the Mega Controller 🎤
    • Preventing Massive View Controllers 🎤
    • Destroying Massive View Controllers 📄 with patterns 📄
    • Lighter View Controllers in Swift 📄 📝
    • View Controller Thinning 📄 via Dependency Injection 📄
  • Viper
    • 250 Days of using VIPER Architecture with Swift 🎤
    • Safer with VIPER 📄
  • Unidirectional Data Flow
    • Ziggurat iOS App Architecture 📄
    • One Way Data Flow Architecture in Swift 🎤
    • Unidirectional Dataflow Architecture with Swift-Flow 🎤 ✏️ 💾
    • ReSwift Unidirectional Data Flow ✏️
    • CocoaFlow Architecture 📄
    • Improve your iOS Architecture with FlowControllers 📄
    • Explaining Flux data flow in Swift 📝
    • ReduxKit is a predictable state container for Swift apps 📄 📝 ✏️
    • State Machines in Swift ✏️ 💾
  • Elm Like Architecture
    • Elmification of Swift 📄
    • Simple model for elm-like composable programs ✏️
    • Swift Elm ✏️
  • Model Layer and Caching

⬆️

Core Data and Realm

  • Core Data
    • What's New in Core Data 🎤 💾
    • Pragmatic 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 🎤
    • Core Data Threading Demystified 🎤
    • My Core Data Stack 📄 📝
    • Core Data Tutorial Series 🔗
    • Core Data Fundamentals: Exploring the Core Data Stack 📄
  • 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 📄
    • Reddit Thread 📄
    • A look into Realm's Core DB Engine 🎤
    • Working with Realm 📄
    • Testing Realm Apps 📄
    • Looking at Realm's Core DB Engine 💾

⬆️

Interview Questions

  • Ray Wenderlich 📋
  • Toptal 📋
  • LeetCode 📋
  • Coding Questions 📋
  • 🔥 Awesome Swift Interview Questions 📋
  • 🔥 Awesome iOS Interview Questions 📋

⬆️

Emoji Key

  • 📝 = Gist
  • ✏️ = Repository
  • 📓 = Blog
  • 📄 = Blog Post
  • 📜 = Quick Reference
  • 📚 = Book
  • 📖 = Guide Book
  • 📰 = Newsletter
  • 💾 = Slides
  • 🎤 = Video Presentation
  • 📹 = Video
  • 🔗 = Link
  • 🔥 = Awesome List
  • 🎓 = Learning Resource
  • 📋 = Interview Questions

⬆️

Shoutouts

Shoutout to @clattner_llvm, the OG Swift Developer. Shoutout to @chriseidhof for encouraging me to promote this idea and for being a huge baller. Shoutout to @ashfurrow and @bennRodri for being so incredibly helpful. Shoutout to @CodaFi_, the TypeLift, and the AntiTypical teams for promoting FP. Shoutout to Elm Trailblazers. Shoutout to Haskell Devs and Category Theory legends. And finally, Shoutout to all the Swift Programmers out there, this project is by you and for you!

⬆️

About

All the resources for Learning About Swift

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Swift 100.0%