Skip to content

Yapzi/Awesome-Swift-Education

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Awesome-Swift-Education Awesome Build Status

There is no royal road to Swift. β€”Euclid

Index

Open Source Swift

⬆️

Swift Style

⬆️

In-Browser Swift Editors

⬆️

References

⬆️

Great Learning Resources

⬆️

Books

⬆️

Video

⬆️

Swift Community

⬆️

Programming with Swift

Audio

⬆️

Closures and Functions

⬆️

Collections

⬆️

Command Line and Scripting

  • 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 πŸ“„
  • Make command line applications in Swift πŸ“
  • SwiftingBridge ::

⬆️

Concurrency

⬆️

Control Structures

⬆️

Data Structures and Algorithms

⬆️

Dates

⬆️

Debugging

⬆️

Design Patterns and AntiPatterns

⬆️

Development Paradigms

⬆️

Enums and Pattern Matching

⬆️

Error Handling

⬆️

Extensions

⬆️

FAQs

⬆️

IO

  • 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 ✏️

⬆️

Functional Programming

⬆️

Functional Reactive Programming

⬆️

Generics

  • Generic Arrays in Swift 2.0 πŸ“„
  • Partial Function Application with Generics πŸ”—
  • Template Metaprogramming Swift πŸ“„
  • Generic Functions for Incompatible Types πŸ“„

⬆️

Initialization, Properties, and Dependency Injection

  • Initialization
    • 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 πŸ“„
    • Definitive Variable Initialization πŸ“„
  • Properties
    • Type Properties
      • Instance property vs static type property vs computed type property πŸ“„
    • Stored Properties
    • Named Parameters
      • Named Parameters πŸ“„
      • Intuition behind the Swift external/local parameter system πŸ“„
      • Swift named parameters πŸ“„
    • Property Observers
      • Property Observers and Lazy Properties πŸ“„
    • IBOutlets
    • Computed Properties
      • Beware of Computed Properties πŸ“„
      • How to use swift computed properties πŸ“„
      • Computed Properties and Initializers
      • Static Vars are Lazy in Swift πŸ”—
      • Turn Computed Property into Lazy Property πŸ“„
    • Static Properties
      • Static Properties πŸ“„
      • Does Swift have class level static variables πŸ“„
      • Static vs class functions/variables in Swift classes? πŸ”—
    • Read-only
      • Read-only and non-computed variable properties πŸ”—
    • Atomicity
  • Dependency Injection
    • You Used To Inject Me In Your Constructor πŸ’Ύ
    • Dependency Injection with a Custom Initializer πŸ“„

⬆️

Interpolability

⬆️

Internals

⬆️

Language Comparisons

  • Language Comparisons
    • Haskell
      • What do Haskell developers think of Swift? πŸ”—
      • A Swift introduction to Haskell πŸ’Ύ
      • Hindley-Milner languages πŸ”—
      • Quicksort in Swift with Haskell style πŸ”—
      • Lesson In Swift Through Haskell πŸ’Ύ
    • Javascript
      • Comparing Swift and Javascript πŸ“„
    • C
    • C++
      • Is Swift a viable alternative to C++ for performance critical code? πŸ“„
      • Swift vs Modern C++ πŸ”—
      • Use a C++ Library from Swift πŸ“„
    • 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
    • Android
      • How to Start Android Development with an iOS Background πŸ“„
    • Go
    • Rust
    • Ruby
    • Scala
    • OCaml
    • Python
    • Elixir
      • Comparing Protocols and Extensions in Swift and Elixir πŸ“„
    • Groovy
      • Apple's Swift programming language inspired by Groovy πŸ“„

⬆️

Linux

⬆️

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 πŸ“„
  • Understanding Optional Chaining πŸ“„

⬆️

Problem Solving

⬆️

Production

  • Dependency Managers
  • 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

  • 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

  • Practical Protocol-Oriented-Programming 🎀
  • 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 πŸ“„

⬆️

REPL

Security

⬆️

Server Side Swift

⬆️

Strings and Regular Expressions

⬆️

Testing

⬆️

Tools

⬆️

Types

⬆️

Weird Swift

⬆️

iOS Programming with Swift

Application Structure / Architecture

⬆️

Core Data and Realm

⬆️

Core Image

⬆️

iOS

  • All of the Apple Device Frameworks πŸ”—
  • Apple Example Code πŸ”—
  • iOS 9 Programming Fundamentals with Swift πŸ”—

⬆️

JSON

⬆️

Persistence

⬆️

UI

⬆️

Web Services, Routing, and Networking

⬆️

Mac Programming with Swift

WatchOS Programming with Swift

tvOS Programming With Swift

⬆️

Xcode

  • About
  • Build System
  • Interface Builder
    • Implementing UI Designs in Interface Builder πŸ“
    • Integrating Designs through IB 🎀
    • IBInspectable / IBDesignable πŸ“„

⬆️

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 @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 former coworker @michaelgray. And finally, Shoutout to all the Swift Programmers out there, this project is by you and for you!

⬆️

About

πŸ”₯ All of the resources for Learning About Swift

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Swift 100.0%