Awesome-Swift-Education
There is no royal road to Swift. βEuclid
Key
Index
- Open Source Swift
- Swift Style
- In-Browser Swift Editors
- Quick References
- Great Learning Resources
- Books
- Video
- Swift Community
- Swift Posts
- Closures
- Collections / Sequences / Generators
- Command Line and Swift Scripting
- Concurrency
- Data Structures and Algorithms
- Date Programming
- Design Patterns and AntiPatterns
- Development Paradigms
- Enums and Pattern Matching
- Error Handling
- Extensions
- Functional Programming, Category and Type Theory
- Functional Reactive Programming in Swift
- Generics
- Initializers, Properties, and Dependency Injection
- Interpolability
- Internals
- Language Comparisons and Transitioning to Swift
- Linux Development
- Optionals and Types
- Production Swift and Problem Solving
- Protocols
- Protocol Oriented Programming in Swift 2
- Security
- Server Side Swift
- String Manipulation and Regex
- Swift Language, Open Source, and Opinions
- Testing Swift Code
- Tools
- iOS Programming with Swift
- Interview Questions
- Shoutouts
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
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
- Not Free (but still awesome) Swift Books
Video
- Presentations
- All the slides from Swift Summit London 2015 π
- Other Video
Swift Community
- 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
π
- iOS at Artsy
- Conferences
- Forums
- Jobs
- Meetups
- Meetup.com Swift Meetups
π
- Meetup.com Swift Meetups
- Newsletters
- Podcasts
- Repositories
- Swift @IBM Community Repo
π
- Swift @IBM Community Repo
Swift Posts
Closures
- @autoclosure, @noescape
- @autoclosure, @inline, @noescape, and @noreturn Keywords
π - How to use @noescape
π - How to use @autoclosure
π
- How to use @autoclosure parameter in an async block
π
- @autoclosure, @inline, @noescape, and @noreturn Keywords
- Currying
- Instance methods are Curried Functions in Swift π
- Closures
- Swift Closures Cheatsheet
π
- Swift Closures Cheatsheet
- Functions
- Swift functions Cheetsheet
π
- Swift functions Cheetsheet
- Weak References
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
π
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
π
- Swift Command Line Application Template :pecnil2:
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
π€ πΎ
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
Design Patterns and AntiPatterns
- AntiPatterns
- Design Patterns
- Swift Design Patterns
πΎ
- Template Method Pattern in Swift
π
- Strategy 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
π π βοΈ βοΈ - Facade Functions
π - Swift Singleton
βοΈ - SOLID Design in Swift
βοΈ - Decorator Pattern through composing functions in Swift
π - Target Action Pattern
π - Typed Notification Observers
π
- Swift Design Patterns
Development Paradigms
- Library Oriented Programming
π€ -
- 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?
π
- The Switch Statement in Swift π
- Official Docs
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 π€
- Async Error Handling π
Extensions
- Swift 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
βοΈ
- String extensions
βοΈ
Functional Programming, Category and Type Theory
- Category and Type Theory
- 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 π
- Cheat Sheet For Typeclasses and Monads in Haskell π
- Functional Programming in Swift
- Declarative Programming
- What is Functional Programming in Swift?
πΎ ππ πΎ - Make Swift More Functional
πΎ - Introduction to Functional Programming in Swift
π πΎ - Functional Programming in Swift Talks
π€ π€ πΎ π€ π€
- What is Functional Programming in 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
π
- Reduce all the things
- Recursion and Infinite Streams
- 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
π
- Continuation Passing Style in Swift
- Lambda Calculus
- Programming is Mathematics π
- Llama Calculus
πΎ
- Functors and Applicatives
- Arrows
- Arrows in Swift
π
- Arrows in Swift
- Monads
- Monoids
- Folds, Zippers, and Lazy Lists
- Promises / Futures
- Combinators
- Lenses, Transducers, Reducers
- Functional Programming with Bananas, Lenses, Envelopes, and Barbed Wire π
- 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
βοΈ - Prelude Library
π - Funky Functional Programming Tools and Experiements βοΈ
- Dollar.Swift Functional Toolkit like Lodash and Underscore βοΈ
- SwiftLand MicroFramework
βοΈ
- Declarative Programming
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
π
- Why FRP
- MVVM
- MVVM + FRP
π
- Modern application architectures (Reactive programming, MVVM and beyond)
π
- MVVM + FRP
- RAC
- Rx
- Functional Rective Programming with RxSwift
πΎ
- Functional Rective Programming with RxSwift
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
- Properties
- IBOutlet Style in Swift
π - Lazy Properties in Structs π
- Class Properties in Swift π
- Stored Properties
π
- IBOutlet Style in Swift
- Dependency Injection
- Swift Injection Wesite
π
- Dependency Injection with a Custom Initializer
π
- Swift Injection Wesite
Interpolability with C and Objective-C
- C
- Swift and C
π€
- Why C is not always safe Swift
π
- Swift and C
- Objective-C
Internals
- ARC
- ARC + Swift
π
- Swift Manual Retain/Release π
- ARC + Swift
- LLVM Compiler
- Memory
- Optimizations
- Performance
- SIL and swiftc
- Explorign SIL and swiftc
π - swift vs swiftc
π - SIMD (Single Instruction Multiple Data) π
- @convention π
- Introspecting Swift
πΎ - Unsafe Swift
πΎ
- Type Introspection
π
- The mysterious builtin module π
- Explorign SIL and swiftc
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
π
- Haskell Overlords
- Transitioning from ObjC
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 βοΈ
Optionals and Types
- Optionals
- Types
- Value and Reference 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
π - Instance methods and type methods in Swift π
- Make all Value Types Equatable
- Abstract Types
- Understanding Abstract Types
π
- Understanding Abstract Types
- Wrapper Types
- Phantom Types
- What are Phantom Types good for?
π
- What are Phantom Types good for?
- Dependent Types
- Nested Types
- Type Reflection and Casting
- Simple Reflection in Swift
π - Understanding Reflection in Swift and how to use it
π - 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
π
- Simple Reflection in Swift
- Associated Types
- 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 π
- Types and Metatypes in Swift
- Typeclasses
- Typeclasses in Swift, Haskell and Scala
π
- Typeclasses in Swift, Haskell and Scala
- Type Inference
- Other
- Value and Reference Types
Production Swift and Problem Solving
- 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
π - Swift, Frameworks & Modules, Learnings from CocoaPods
π - BuddyBuild Continuous Integration
π - Swift Package Manager
πΎ - Naming assets
π - Xcode Snippets
βοΈ
- How Carthage works
- Problem Solving with Swift
Protocols
- Swift Comparison Protocols
π
- Protocols in Swift
π
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
π
Security
- Encryptor / Decryptor Data Format
βοΈ - CommonCrypto in Swift
π€ - π₯ Awesome iOS Security
π - Ceaser Cipher in Swift
π π - Swift-ly secure
π€ - Common Crypto
π - Reverse Engineering iOS Apps
π€
Server Side Swift
- Hello Server Side Swift
π - Vapor Swift Web Framework
βοΈ - Swift Redis
βοΈ - TCP Sockets in Swift
βοΈ - Zevo Server Side Swift Community π
- Venice based HTTP server for Swift 2.2 on Linux
βοΈ - Swift HTTP Servers
βοΈ βοΈ βοΈ βοΈ - Swift Server IO
βοΈ - Kitura Web Framework and HTTP Server
βοΈ - Swift on Rails βοΈ
String Manipulation and RegEx
- Strings
- 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
βοΈ
- RegularExpressions in Swift
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
π
- WWDC 2014: Advanced Swift
- 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?
π
- Top 10 iOS Swift libraries every iOS developer should know about
π
- Wishlist for Swift 3.0
Testing Swift Code
- Unit Testing
- TDD
- BDD
- UI Testing
- UI Testing Cheat Sheet π
- Replacing KIF with XCUI Tests
π
- Debugging
- Network Testing
- Snapshot Testing
- iOS Snapshot Test Cases
βοΈ
- iOS Snapshot Test Cases
- Profiling
- Functional Testing
- Other
Tools
- Continuous Integration
- Using Xcode Bots
π
- Using Xcode Bots
- Debugging Tools
- Delivery Tools
- Development Tools
- Docker Tools
- Server Tools
- Heroku Buildpack for Swift
βοΈ
- Heroku Buildpack for Swift
- Swift Tools
- Exploring Graph Theory with OmniGraffle and Swift
π
- Exploring Graph Theory with OmniGraffle and Swift
- Xcode Tools
iOS Programming with Swift
Application Structure / Architecture
- 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
π€
- Refractor the Mega Controller
- Model Layer and Caching
- Model View Whatever
- 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
βοΈ πΎ
- Uber Jetstream βοΈ
- Building a Unidirectional Data Flow app with Realm
π
- Ziggurat iOS App Architecture
Core Data and Realm
- Core Data
- 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
π - Pragmatic Core Data
π€
- A Swift Into To Core Data
- 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
πΎ
- Super simple Realm Intro
UIKit
- Animations
- Autolayout
- CollectionViews
- Core Image
- Core Image Blog
π
- Core Image Blog
- Presenting
- Swifty View Controller Presenters π€
- TableViews
- SpriteKit and Metal
- Mixing SpriteKit with UIKit in iOS 9
π
- Mixing SpriteKit with UIKit in iOS 9
- UIKit
Web Services, JSON, Routing, REST, and Networking
- Networking
- JSON
- Functional JSON Parsing with Tyro
βοΈ - { JSON, Swift, and Type Safety }
πΎ - JSON in Swift
π - Functional JSON Parsing π
- Functional JSON Parsing with Tyro
- Routing
- An AlamoFire Router
π
- An AlamoFire Router
- Web Services
Xcode
- The Xcode Build System
π
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
π» = Podcast
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. Shoutout to FutureKit. And finally, Shoutout to all the Swift Programmers out there, this project is by you and for you!