There is no royal road to Swift. βEuclid
- Open Source
- Style
- In-Browser Editors
- References
- Learning Resources
- Books
- Video
- Community
- Programming
- Audio
- Closures and Functions
- Collections
- Command Line and Scripting
- Control Structures
- Concurrency
- Data Structures and Algorithms
- Dates
- Debugging
- Design Patterns and AntiPatterns
- Development Paradigms
- Enums and Pattern Matching
- Error Handling
- Extensions
- FAQs
- Functional Programming
- Functional Reactive Programming
- Generics
- Initialization, Properties, and Dependency Injection
- Interpolability
- Internals
- IO
- Language Comparisons
- Linux
- Optionals
- Pointers
- Problem Solving
- Production
- Protocols
- Protocol Oriented Programming
- REPL
- Security
- Server Side Swift
- Strings and Regular Expressions
- Testing
- Tools
- Types
- Weird Swift
- iOS Programming with Swift
- Mac Programming with Swift
- watchOS Programming with Swift
- tvOS Programming with Swift
- Xcode
- Shoutouts
- Apple Master Github Repository π
- Swift Master Repository βοΈ
- Download Swift π
- Core Libs Unimplemented Parts βοΈ
- Swift Core Libs Foundation Repository βοΈ
- Swift Core Libs Dispatch Repository βοΈ
- Swift Clang Repository βοΈ
- Swift LLDB Repository βοΈ
- Swift Packages βοΈ
- Swift Compiler Crashes βοΈ
- Latest Code changes in Swift π
- No Single Swift Style π
- Functional Swift Style Guide π
- The Official Swift Language Docs π
- Swift Language Evolution π π
- Awesome Lists
- π₯ Awesome Swift Playgrounds π
- π₯ Awesome iOS π
- π₯ Awesome Swift π
- π₯ Another Awesome Swift π
- π₯ Awesome Functional Programming π
- Other
- Swift.org π
- Every Operator 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 π
- iOS Programming Library π
- 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 9 Apps with Swift π
- Realm Roundup: 25 Realm Resources and Tutorials π
- Functional Reactive Programming iOS Learning Resources π
- Learn Core Data π
- Udacity Swift Syntax Course π
- Open Source iOS Apps βοΈ
- A summary of swift in playgrounds βοΈ
- Free
- Paid
- Open Source
- Pragmatic iOS Testing π
- Presentations
- All the slides from Swift Summit London 2015 π
- Other Video
- Apps
- Charter Swift Mailing List Client βοΈ
- Blogs
- iOS at Artsy π
- π Objc.io π
- NSBlog with Mike Ash π
- Use Your Loaf π
- Chris Eidhof π
- Ole Begemann π
- Alexandros Salazar π
- Uramio π
- Swift Weekly π
- Erica Sadun π
- Appventure π
- MetalByExample.com π
- NSHipster π
- David Owens π
- The iOS Times π
- Crunchy Development π
- iOS Blog π
- iAchievedIt Blog π
- Coding Explorer Blog π
- 100 Curated iOS Blogs π
- That Thing In Swift π
- Conferences
- Forums
- Jobs
- Meetups
- Meetup.com Swift Meetups π
- Newsletters
- Repositories
- @autoclosure, @noescape, @noreturn, @nonnmutating
- Currying
- Instance methods are Curried Functions in Swift π
- Closures
- Swift Closures Cheatsheet π
- Closures and Capturing Values in Swift π π
- Using Local Closures with Swift π
- Delaying Code Execution through Closures π
- Can we please make a standard style for closures? π
- Closures in API Design π€
- 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 π
- Variable capture by closures in Swift and inout parameters π
- Callbacks π
- Functions
- Selectors
- Swift: Selector syntax sugar π
- Weak References
- Arrays
- How arrays are implemented in Swift π π π
- Let's Build a Swift.Array π
- Array Structure Reference π
- Swift Arrays and Dictionaries π
- An Array implemented in Swift by Mike Ash π
- Collections
- Swift Collections π
- Dictionaries
- Enumeration
- SequenceType / GeneratorType
- SequenceType vs GeneratorType vs CollectionType π
- A quick guide to SequenceType π
- Sequences and Generators in Swift π
- Experimenting with Seqs and Generators π
- Sequence Conformance π
- Sets
- Sets vs Dictionaries in Swift π
- Slices
- Subscripting
- 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 π
- Swift Command Line Application Template βοΈ
- Using Swift As General Purpose Scripting Language π
- Swift framework for launching shell tasks βοΈ
- Swift framework for parsing command-line arguments βοΈ
- Command Line Utilities in Swift π
- GCD
- The GCD Handbook π
- NSOperation
- Async
- Actor Model
- Actor Model Concurrency in Swift βοΈ
- Coroutines
- Coroutines in Swift π
- Locking and Threading
- Swift Break and Continue Statements π
- Custom Control Structures in Swift π
- Loops in Swift π
- Algorithms
- Arrays
- Backtracking
- Backtracking problem π
- Data Structures
- Graphs
- GraphQL π
- SwiftGraph βοΈ
- Hash Table
- Hash Table π
- Image Processing
- Swift Image Processing βοΈ
- Language Processing
- Lists
- Learning
- Math
- Swift Matrix Math Library βοΈ βοΈ
- Tensor Methods in Swift βοΈ
- Abstract Algebraic Structures in Swift 2 βοΈ
- SwiftGL Math Library βοΈ
- Sigma Swift Statistics βοΈ
- Swift Generic Geometry βοΈ
- Darwin π
- Abstract Algebra in Swift βοΈ
- Complex Numbers βοΈ
- Linear Algebra Swift Extensions βοΈ
- Matrix Examples Swift βοΈ
- Linear Algebra in Swift βοΈ
- Protocol Oriented Number System βοΈ
- Examples of Computational Statistics in Swift π€
- Persistent
- Swift implementation of Clojure's persistent data structures βοΈ
- Solutions
- HackerRank Solutions in Swift βοΈ
- Sorts
- Write a Generic Stable Sort βοΈ
- Sort Utils βοΈ
- Stacks / Queues
- Banker's Queue π
- Trees
- Rose Tree in Swift π
- Binary Tree βοΈ
- Abstract Binding Trees π
- Red Black Tree π
- A persistent tree using indirect enums π
- Patricia/Radix trees for Swift βοΈ
- A Trie π
- Random Forest βοΈ
- Swiftly getting a human-readable date with NSDateFormatter π
- Swift Date βοΈ
- NSDateFormatter.com π
- Date.Swift βοΈ
- A Calendar π
- Date Programming βοΈ
- NSTimer Wrapper :oencil2: βοΈ
- LLDB
- Logging
- Debugging
- Debugging Swift π€
- Debugging Xcode 6 π€
- View Debugging in Xcode π
- Swift Debugging Tips π
- Chisel LLVM Debugging βοΈ
- Debugging with stack traces in Swift π
- Debugging the Swift Compiler π
- Compile Time vs Run Time Checking π
- The Debug Navigator π
- Debugging your iOS App's HTTP(S) Traffic π
- Debugging Magic π€
- Debugging the Swift Compiler π
- Other
- AntiPatterns
- Segues > Delegation π
- Design Patterns
- Overview
- Template Method
- Template Method Pattern in Swift π
- Strategy
- Strategy Pattern in Swift π
- Command
- Command Pattern in Swift π
- Adapter
- Adapter Pattern in Swift π
- Builder
- Lazy Properties + Builder Pattern π
- The Builder Pattern and Fluent Interface π
- Observer
- Null Object
- The Null Object Pattern π
- Factory
- Functions as Factories π
- Facade
- Facade Functions π
- Singleton
- Swift Singleton βοΈ
- Using a dispatch_once singleton model π
- Decorator
- Decorator Pattern through composing functions in Swift π
- Target Action
- Target Action Pattern π
- Class Cluster
- Class Cluster π
- 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 π€
- Intro to Object-Oriented Design in Swift π π
- Aspect Oriented Programming with Swift π π βοΈ
- Entity Component System βοΈ
- Data Driven Design in Swift πΎ
- Robotics with Swift π
- Framework oriented Programming π
- Boundaries in Practice π
- Enums
- Enums in Swift π
- Advanced and Practical Enum Usage in Swift π
- Enumerating Tuple Values in Swift π
- Simplified 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 π
- Immutable Enumeration in Swift π
- The Types of Data in Swift π
- Discriminated Unions in Swift π
- Swift Enum with no cases π
- How can enums be recursive? π
- Swift enums - the not so good parts π
- 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? π
- The Switch Statement in Swift π
- Guard
- The Value of Guard π π
- Guard and Defer π
- Defer in Swift π
- When to (not) use guard π π RE π
- Three tips for concise Swift using the Guard statement π
- Throw
- Let it Throw! π
- try / catch
- try/catch with asynchronous closures π
- Asserts
- Swift assertions π
- Using the assert() keyword π
- ErrorType
- Testing Swift's ErrorType π€
- Swift 2: Error handling using ErrorType, throws, try and do-catch π
- Result: Swift type modelling the success/failure of arbitrary operations βοΈ
- Other
- ExSwift βοΈ
- Useful Swift Extensions βοΈ βοΈ βοΈ
- 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 βοΈ
- About Swift
- Swift Documentation π π
- Official About Swift π
- Writing better Swift π€
- Switching your brain to Swift π
- Short Circuit Evaluation π
- How Swift makes your life better π
- Emerging best practices in Swift π€
- Swift Thinking π€
- Catching up with Swift πΎ
- Idiomatic Swift πΎ
- Swiftly Methods π
- Open Source Swift
- 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? π
- Swift Versions
- Basic File Reading and Writing Using Swift π
- Read and write data from text file π
- Working with Files in Swift π
- A portable I/O framework for Swift βοΈ
- Reading and Writing Files to the iOS File System π
- Write large files to disk on background thread π
- Zip and unzip files with Swift βοΈ
- NSData extension enables gzip/gunzip using zlib βοΈ
- Declarative Programming
- Modern Declarative Programming in Swift π
- What is Functional Programming in Swift? πΎ π π πΎ π€
- Functional Programming By Example π
- Make Swift More Functional πΎ
- Introduction to Functional Programming in Swift π πΎ
- Functional Programming in Swift Talks π€ π€ πΎ π€ π€
- Immutable State
- Embrace Immutability π€
- Immutable Swift π
- 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
- Tail Call Optimization
- Thunks
- Wnat is an abstraction thunk helper? π
- CPS
- Continuation Passing Style in Swift π π
- Tying the Knot in Swift [:link:](http://stackoverflow.com/a/24026196/2855836
- Chaining with Continuations π
- Infinite
- Memoizations
- Memoization in Swift π
- Lambda Calculus
- Programming is Mathematics π
- Llama Calculus πΎ
- Functors and Applicatives
- Arrows
- Arrows in Swift π
- Monads
- Monoids
- Folds and Lazy Lists
- Zipper
- Array to Zipper βοΈ
- zip(), zip3(), unzip(), and unzip3() for Swift π
- Promises / Futures
- Combinators
- Parser Combinators in Swift π€
- Lenses, Transducers, Reducers
- Categories
- Category Theory Practice βοΈ
- Functional Frameworks
- Swiftz Functional Programming Library βοΈ
- Second Bridge Swift Functional Framework βοΈ
- Swiftx Functional Data Types βοΈ
- Basis Pure Declarative Programming in Swift βοΈ
- Functional Concurrency Primitives βοΈ
- Prelude Library π
- Funky Functional Programming Tools and Experiements βοΈ
- Dollar.Swift Functional Toolkit like Lodash and Underscore βοΈ
- SwiftLand MicroFramework βοΈ
- FRP
- WhatI wished younger me knew about 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 π
- What is Functional Reactive Programming? π
- The Non-Reactive Solution π
- Simple Reactive Programming π
- MVVM
- MVVM + FRP π
- RAC
- Rx
- Functional Rective Programming with RxSwift πΎ
- About
- A Sanatorium for Swift Generics π
- Covariance
- Covariant and contravariant generic type parameters π
- Protocol Generics
- Protocol Generics Self π
- Generic Protocols in Swift π
- Extending Swift Generic Types π
- Generic Typealias in Swift π
- What are Generic Protocols good for?
- Where keyword
- Patterns
- Parametric Polymorphism
- Initialization
- Swift Initializers π
- Be Mindful of Your Filters π
- Swift Initialization and the Pain of Optionals π
- Initializers for Structs π
- Swift init() π
- Public Getter, Private Setter π
- What are get and set? π
- Why is the convenience keyword needed in Swift? π
- When should I use deinit? π
- Designated and Convenience initializers in Swift π
- Writing Class Initalizers π
- Swift Failiable Initializers π
- Definitive Variable Initialization π
- Properties
- Type Properties
- Instance property vs static type property vs computed type property π
- About Type properties π
- Stored Properties
- Stored Properties π
- List of class' properties π
- Named Parameters
- Property Observers
- Property Observers and Lazy Properties π
- Property Observers π
- Swift Property Observers π
- IBOutlets
- Outlets: Strong! Or Weak? π
- IBOutlet Style in Swift π
- Computed Properties
- Beware of Computed Properties π
- How to use swift computed properties π
- Computed Properties and Initializers
- Static Vars are Lazy in Swift π
- Lazy Properties in Structs π
- Turn Computed Property into Lazy Property π
- Type Properties
- Dependency Injection
- You Used To Inject Me In Your Constructor πΎ
- Dependency Injection with a Custom Initializer π
- Dependency Injection Container βοΈ βοΈ
- Nuts and Bolts of Dependency Injection in Swift π
- Inversion of Control and Dependency Injection βοΈ
- Swift Dependency Injection Framework βοΈ βοΈ
- Swift Injection Wesite π
- Property Injection π
- Constructor Injection π
- DIY: Build Your Own Dependency Injection Library π€
- C
- Swift And C: Everything You Need to Know π
- Swift and C π€
- Why C is not always safe Swift π
- Swift Interop π€
- char ** in Swift π
- C Pointer Memory π
- C Callbacks in Swift π
- A Swift wrapper around libcurl that works with Linux βοΈ
- Swift Wrappers Around CommonMark βοΈ
- Swift Substring on a C String π
- Swift can now partially import C aggregate π
- Compiling and Interpolating C with the spm π
- Objective-C
- Swift & the ObjC Runtime π
- How are NSDictionaries implemented in-memory? π
- Exposing NSMutableArray π
- Source-Code for the Objective-C Runtime βοΈ
- Wrapping Objc Frameworks in Swift πΎ
- Casting Swift objects to Objective-C types π
- How to call Objective C code from Swift π
- Method Swizzling in Swift π
- How to Method Swizzle in Swift π π
- Conform to Objective C Protocols in Swift π
- Swift extensions on Objective-C classes still need to be prefixed π
- ARC
- ARC + Swift π
- Swift Manual Retain/Release π
- ARC in depth π π
- ARC + Swift π
- ARC Exploration and pitfalls π
- Static vs Dynamic Linking π
- ARC vs Garbage Collection π
- Why Swift should drop ARC π
- Call By Name π
- Are Swift variables atomic? π
- Is there a reason that Swift array assignment is inconsistent (neither a reference nor a deep copy)? π
- How does Swift implement ARC in property attributes? π
- Will ARC always make Swift slower than a language without any type of garbage collector like C++ or C? π
- Assembly
- Build
- Clang
- Grammar
- Implicit Member Expression π
- LLVM Compiler
- LLVM and Swift π€
- LLVM in Swift: Setup π
- Kaleidoscope: Implementing a Parser and AST in LLVM π βοΈ
- Swift Object Name De-mangling π
- How to use LLVM API with Swift π π
- Swift Compiler π
- Parsing Mach-O files π
- How to use LLVM C API with Swift π π
- Creating a Virtual Machine/Register VM π
- What is LLVM and how does it differ from GCC? π
- Swift wrapper around LLVM βοΈ
- Simple programming language written in Swift and compiled with LLVM βοΈ
- Memory
- Optimizations
- The Importance of Being Final π
- Switch Statement Optimizations π
- Swift Whole Module Optimization π
- Increasing Performance by Reducing Dynamic Dispatch π€
- Dynamic Dispatch and Whole Module Optimization π
- How Swift uses introSort π
- Optimizing Swift Performance π€
- Functional Style - 50x Speed boost from changing 1 Keyword π
- Launch time performance optimization π
- Meaning of the LLVM Optimization Levels π
- ARC Optimization for Swift π
- High Level SIL Optimizations π
- The Effect of Dependency Structure on iOS Launch Times π
- Performance
- Swift Performance πΎ ππ
- Swift 2 Under the Hood πΎ
- Swift Compiler Diagnostics π
- Swift: Performance of Inline Code versus Instance Methods versus Class Methods π
- Simple Swift.String Performance Test βοΈ
- Secret of Swift Performance π π
- Writing High Performance Swift Code π
- Swift Single Soutce π
- 10 thousand times faster Swift π
- Preprocessing
- SIL and swiftc
- Official SIL Page π
-
- πIntroduction to Swift Intermediate Language πΉ
- Exploring SIL and swiftc π
- swift vs swiftc π
- SIMD (Single Instruction Multiple Data) π
- @convention π
- Introspecting Swift πΎ
- Unsafe Swift πΎ
- Type Introspection and demangling π
- Language Comparisons
- Haskell
- Javascript
- Comparing Swift and Javascript π
- C
- C++
- C++ Advice to Swift Devs π
- C#
- Swift for C# Developers π
- Swift is a lot like C# π
- Swift vs C# π
- Swift vc C# reference guide π
- Is something in Swift like LINQ in C# π
- Are the Tuples in Swift complete alternative to Anonymous types as in C# π
- Swift Protocol Extensions and C# Abstract Classes π
- C# like async in Swift π
- Java
- Swift Protocols vs Java 8 Interfaces π
- Swift 2.0 Protocol Extensions vs Java Abstract Classes π
- Swift vs Java Performance π
- Making Abstract Classes in Swift π π
- Why doesn't Apple Swift adopt the memory management method of garbage collection like in Java? π
- Class level or struct level method in swift like static method in Java? π
- Difference between Swift 2.0 protocol extensions and Java/C# abstract classes? π
- Kotlin
- Swift is like Kotlin π
- Android
- How to Start Android Development with an iOS Background π
- Go
- Rust
- Ruby
- Swift For Rubyists π€
- Scala
- Swift is a lot like Scala π
- Ocaml
- OCaml's Deferred in Swift π
- Python
- Pythonic Swift βοΈ
- Elixir
- Comparing Protocols and Extensions in Swift and Elixir π
- Intro to Swift Dev on Linux π π
- Dynamic Swift Framework Without Xcode π
- Foundation on Linux π
- NSLinux Strings βοΈ
- interact with Linux GPIO/SPI on ARM βοΈ
- Concurrency on Linux π
- Power Linux π
- Foundation on Linux π
- Practical Cross-Platform Swift π€
- 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 π
- Understanding Optional Chaining π
- Problems
- Interview Questions
- Ray Wenderlich π
- Toptal π
- LeetCode π π
- Coding Questions π
- π₯ Awesome Swift Interview Questions π
- π₯ Awesome iOS Interview Questions π
- Swift Computer Science Problems βοΈ
- Dependency Managers
- Carthage
- How Carthage works πΎ πΎ
- Cocoapods
- SPM
- Carthage
- Modules and frameworks
- Docker
- Deploy and run Swift Kitura Applications with Docker π
- Docker image that contains all dependencies for building and running the Kitura sample application βοΈ
- Docker for iOS Development βοΈ
- How I'm dockerizing Swift web apps π
- Docker containers used for spinning up different Swift web frameworks π
- Easy Server Side Swift with Docker π
- Swift example to run on Kubernetes βοΈ
- Run Linux Swift on your Mac or PC with Docker π
- Other
- Protocols in Swift π
- The Genius of Protocols π
- Swift Comparison Protocols π
- Standard Template Protocols βοΈ
- Properties of Types Conforming to Protocols π
- Swift Default Protocol Implementations π
- Optional Protocol Methods π
- Using the Hashable Protocol π π
- Swift Protocol Naming Conventions π
- A default CustomStringConvertible implementation for Swift types π
- A protocol that allows any class to be printed as if it were a struct π
- π Protocol-Oriented Programming in Swift π€ πΎ π π
- Beyond Crusty π€ π
- POP is OOP Thesis π
- 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 π
- π Mixins and Traits in Swift 2.0 π
- Minimal Swift 2.1 Protocol Coformance π
- Favor Mixins over inheritance π
- Stateful mixins in Swift π
- Use Protocol Composition π
- Current Recommended Protocol Usage π
- POP in Swift vs ObjC and C++ π
- POP Utility Belt βοΈ
- Typesafe and Composable Data Sources in Swift π
- Protocol Extension Method Dispatch π
- Weird things you can do with protocol extension π π
- Improved Protocol-Oriented Programming with Untyped Type Aliases π π
- Protocol-Oriented Problems and the Immutable 'self' Error π
- Multiple Inheritance vs. Traits or Protocol Extensions π
- Protocol Oriented Networking π π πΎ
- Protocol-Oriented Views in Swift π
- Cryptography with Swift π€ βοΈ
- Encryptor / Decryptor Data Format βοΈ
- CommonCrypto in Swift π€
- Ceaser Cipher in Swift π π
- Swift-ly secure π€
- Common Crypto π βοΈ
- Reverse Engineering iOS Apps π€
- Security and Your Apps π€
- Make iOS apps more secure with SSL pinning π
- Security Framework Wrapper βοΈ
- SwCrypt βοΈ
- Hello Server Side Swift π
- The case for bringing Swift to the server π
- IBM's Swift on the Server π€
- Vapor Swift Web Framework βοΈ
- Kitura Web Framework and HTTP Server π βοΈ βοΈ
- Swift Redis βοΈ
- Swift Sockets: TCP, UDP; Client, Server βοΈ π
- Zevo Server Side Swift Community π
- Swift HTTP Servers π βοΈ βοΈ βοΈ βοΈ βοΈ βοΈ βοΈ
- Swift on Rails βοΈ
- Swift Website Example βοΈ
- Write Web Server in Swift βοΈ
- Swift and Perfect Server on Linux with Vagrant βοΈ
- Caramel brings powerful, expressive I/O to Server Side Swift π€
- Strings
- Lexing and Parsing
- Abstract Syntax Tree π
- Regular Expressions
- Unit Testing
- Testing in Xcode 6 π€
- Better Unit Testing with Swift π
- Unit Testing in Swift π π
- The Philosophy π
- 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 π
- What's the difference between unit, functional, acceptance, and integration tests? π
- Testing with Swift β Approaches & Useful Libraries π
- Mocking
- Real world mocking in Swift π€
- Stubbing
- Stub driven mobile app development π
- TDD
- BDD
- UI Testing
- Network Testing
- Snapshot Testing
- iOS Snapshot Test Cases βοΈ
- Profiling
- Functional Testing
- iOS Testing
- Code Coverage
- Xcode code coverage π
- Code Injection
- Analyzers
- Benchmarking
- Practicing Swift Benchmarks βοΈ
- Continuous Integration
- Code Coverage
- Debugging Tools
- Delivery Tools
- Development Tools
- Docker Tools
- Server Tools
- Heroku Buildpack for Swift βοΈ
- Swift Tools
- Xcode Tools
- Alcatraz Master Repository βοΈ
- Cocoa Layout Instrument π
- IBAnimatable βοΈ
- Draw in Interface Builder βοΈ
- VVDocumenter βοΈ
- Analytics workflow in Swift βοΈ
- Anarchy Swift Build Tools βοΈ
- Refractor Swift Code with Refractorer βοΈ
- xcbuild Build Tool βοΈ
- Speeding Up Slow Swift Build Times π
- SwiftCompilationPerformanceReporter βοΈ
- Category and Type Theory
- Cheat Sheet For Typeclasses and Monads in Haskell π π π
- Category Theory For Beginners πΎ πΎ
- Category Theory and Programming π€
- Awesome Math/Category Theory π
- Category Theory in Haskell π
- The Category Design Pattern π
- Type Theory vs Category Theory π π
- MIT Category Theory Class π
- Reference Types (Classes)
- Value Types (Structs)
- How can I make a container with copy-on-write semantics? π
- When to use mutating functions in swift structs π
- Mutating Funcs in Swift Structs π
- Making Friends with Value Types π€
- Swift copy-on-write behavior for a struct using HeapBuffer π
- Swift pass struct by reference? π
- Value Types π
- Fully Value-Typed Arrays in Swift π
- Structs as Data Models π
- Swift and mutating struct π
- Algebraic Types
- Compose Types
- Composing Types π
- Named Types and Compound Types π
- Abstract Types
- Wrapper Types
- Phantom Types
- What are Phantom Types good for? π
- Dependent Types
- Dynamic Types
- Nested Types
- Type Reflection and Casting
- Typecasting and the Swift Runtime π
- Why doesn't Swift have implicit type conversion? π
- as? vs as! π
- Understanding Downcasting Operators in Swift π
- Type check with switch statements π
- Associated Types
- Type Aliases
- Generic Typealiases π
- 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 π
- MirrorTypes
- Using a Mirror Struct to get an object's type π
- Typeclasses
- Typeclasses in Swift, Haskell and Scala π
- Type Inference
- Type Variance
- Type Variance in Swift π
- Type Erasures
- Type Erasures π€
- Other
- Pointers
- Dereference an UnsafeMutablePointer π
- UnsafePointer π
- UnsafeMutablePointer π
- COPaquePointer and CFunctionPointer π
- How to Dereference an Unsafe Mutable Pointer in Swift π
- Pointers, Pointer Arithmetic, and Raw Data in Swift π
- If a function returns an UnsafeMutablePointer is it our responsibility to destroy and dealloc? π
- Advanced
- Other Swift Attributes you may not have heard of π
- Hipster Swift π π€
- Namespaces in Swift π π π
- Swift Enums as namespace π
- Swift Method Dispatching π
- Global variables in Swift are not variables π
- @convention(c) π
- Infix π
- CVArgType π
- Hidden Gems in Swift π€
- A Look At Swift's Elusive ~> Operator π
- ObjectiveCBridgeable π
- Extinct
- Dropped Patterns π
- Elm Like Architecture
- Functional
- 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 π
- Consistent, Thin, & Dumb: Redesigning the Spotify iOS App π€
- 3 Strategies for Skinny VCs π
- Clean Swift iOS Architecture for Fixing Massive View Controller βοΈ βοΈ
- Model Layer and Caching
- Model View Whatever
- iOS Architecture Patterns π π π
- Clean Architecture in Swift βοΈ
- Demystifying iOS Architecture Patterns π
- MVVM-C πΎ βοΈ
- Stateful View Controller βοΈ
- An MVP Framework βοΈ
- Designing App Infrastructure π
- Model-View-Binding in Swift π
- Service Oriented Archiecture in Swift with MVVM π€
- Pitfalls of MVVM π
- Bindings, Generics, Swift and MVVM π
- Cloud based View Models βοΈ π
- React-Like Views βοΈ
- 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 π π βοΈ
- Uber Jetstream βοΈ
- Building a Unidirectional Data Flow app with Realm π
- Swift Flow + RxSwift π
- State Machines
- State Machines in Swift βοΈ πΎ π
- How to build a FSM with Swift π π
- Transporter is a modern finite-state machine implemented in pure Swift βοΈ
- FSMs in Swift and the State Pattern π βοΈ βοΈ
- Generic State Machine in Swift π
- Building Swift State Machine Series π π π π π
- Swift implementation of Robert C. Martin's turnstile state-machine example π
- Simple State Machine in Swift βοΈ
- Core Data
- Official Apple Guide π
- What's New in Core Data π€ πΎ
- Pragmatic Core Data π€
- Getting Started with 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 π
- Comparing Core Data Stacks π
- Better Core Data Models with Swift π
- Core Data Threading Demystified π€
- My Core Data Stack π π
- Core Data Tutorial Series π
- Core Data Fundamentals: Exploring the Core Data Stack π
- Pragmatic Core Data π€
- Core Data Migrations Tutorial π π
- Multiple Managed Object Contexts π
- Getting Started with Moya π
- Realm
- Super simple Realm Intro π πΎ π
- A look into Realm's Core DB Engine π€
- Designing a Database: Realm Threading Deep Dive π
- Why Realm over Core Data? π πΎ π π
- Official Realm Introduction π
- Realm Tutorial π
- Realm Best Practices π
- Realm Repo π
- Reddit Thread π
- Working with Realm π
- Testing Realm Apps π
- Looking at Realm's Core DB Engine πΎ
- Realm Incremental Store βοΈ
- Migrations in Realm π
- Migrating an app from Core Data to Realm π
- Realm + Alamofire + VIPER π
- How Realm kills C++ STL Binary Search π
- App state with Realm and RxSwift π
- Migrating to Realm on iOS π€
- RxRealm π€
- All of the Apple Device Frameworks π
- Apple Example Code π
- iOS 9 Programming Fundamentals with Swift π
- Functional Parsing
- Efficient JSON Parsing with Functional Concepts π
- { JSON, Swift, and Type Safety } πΎ
- JSON in Swift π
- 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 π
- Operator Overloading and JSON Parsing in Swift π
- Swift JSON βοΈ
- Beyond JSON in Swift π€
- Generate JSON from Swift Structs π
- Flat Buffers (an efficient cross platform serialization library) in Swift βοΈ πΎ
- Unpacking JSON with Swift πΉ
- NSCoding and UserDefaults π
- NSCoding And Swift Structs π
- NSCoder and NSKeyedArchiver π
- NSCoder initialization π
- Simple persistent storage π
- How to cache data using NSCache π π
- Access SQLite DB in Swift π
- Simple Object Persistence βοΈ
- Animations
- Autolayout
- CollectionViews
- Core Animation
- Advanced Graphics with Core Animation π€
- Core Graphics
- Core Graphics Tutorial π
- Core Image
- Core Image Blog π
- Presenting
- Swifty View Controller Presenters π€
- TableViews
- SpriteKit and Metal
- Mixing SpriteKit with UIKit in iOS 9 π
- UIKit
- Networking
- AlamoFire Tutorial π
- Routing
- Web Services
- IBM Wearables SDK βοΈ
- Creating a Client Server tvOS app π
- About
- Xcode Core Concepts π
- Build System
- Interface Builder
- π = Gist
- βοΈ = Repository
- π = Blog
- π = Blog Post
- π = Quick Reference
- π = Book
- π = Guide Book
- π° = Newsletter
- πΎ = Slides
- π€ = Video Presentation
- πΉ = Video
- π = Link
- π₯ = Awesome List
- π = Learning Resource
- π = Interview Questions
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 @Ben-Evolently 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. Shoutout to FutureKit, made by my coworker @michaelgray. And finally, Shoutout to all the Swift Programmers out there, this project is by you and for you!