所有关于Swift的学习指南
jopen
9年前
Awesome-Swift-Education
A curated list of resources for learning about the Swift Language
Key
- = Gist
- = Repository
- = Blog
- = Blog Post
- = Slides
- = Video Presentation
- = Video
- = Link
- = Book
- = Awesome List
- = Learning Resource
- = Interview Questions
- = Networking Related Post
- = Algorithm Related Post
Index
- Open Source Swift
- Swift Style
- In-Browser Swift Editors
- Quick References
- Blogs
- Newsletters
- Great Learning Resources
- Free Books
- Presentations
- WWDC Presentations
- Other Video
- Posts
- Animations and Front End Stuff
- Application Structure / Architecture
- Associated Types and Objects
- Closures
- Collections / Sequences / Generators
- Command Line and Swift Scripting
- Core Data
- Data Structures and Algorithms
- Design Patterns
- GCD and NSOperation
- Generics
- Development
- Enums and Pattern Matching
- Error Handling
- Extensions
- Functional Programming in Swift
- Functional Reactive Programming in Swift
- Initializers
- Interpolability
- Language Comparisons
- LLVM Compiler
- Objective C Transitioning to Swift
- Open Source Swift
- Operator Overloading
- Opinions about Swift
- Optionals and Types
- Other
- Problem Solving in Swift
- Production Swift
- Protocol Oriented Programming in Swift 2
- Realm
- Security
- Swift Language
- Text Manipulation
- Type Reflection and Casting
- Web Services and Networking
- Web Services - Other
- Interview Situations
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
- Docker Swift
- Swift Packages
- Swift Compiler Crashes
- Open Radar Swift
Swift Style
- The Official Swift Language Docs
- Swift Language Evolution
- Swift Stye Rules
- SwiftLint
- Swift Language Philosophies
- Swift Lang F.A.Q.
In-Browser Swift Editors
Quick References
- Swift.org
- That Thing In Swift
- SwiftDoc
- iOS Cookies
- Awesome Swift
- Another Awesome Swift
- Awesome Pure Swift
- Awesome iOS
- iOS Good Practices
- Little Bites of Cocoa
- Libraries used in the top 100 Apps
- Fu*king Closure Syntax
- RAC Marbles
- Swift Knowledge Base
Blogs
- iOS at Artsy
- The Swift Diary
- Human Friendly Swift Blog
- Objc.io
- NSBlog with Mike Ask
- Use Your Loaf
- Chris Eidhof
- Ole Begemann
- Uramio
- Swift Weekly
- Erica Sadun
- ThinkAndBuild
- MetalByExample.com
- David Owens
- The iOS Times Curated Review of the latest leading Github Projects
Newsletters
- This Week in Swift News: Curated Swift News
- iOS Goodies
- iOS Dev Weekly
- Swift Sandbox Newsletter
- SwiftLang Website
- Awesome Swift News
- Swift Weekly
- Gettin' Swifty With It
Great Learning Resources
- Hacking With Swift
- A Better way to learn Swift
- Ray Wenderlich Tutorial Pages
- Swift Education
- Play with Swift
- Realm Roundup: 25 Realm Resources and Tutorials
- Funcitonal Reactive Programming iOS Learning Resources
- Learn Core Data
Free Books
Presentations
- All the slides from Swift Summit 2015 and highlights from the talks and notes
- All the Presentations from Swift Summit London
- All Presentations from #Pragma Conference
- MobileKonf 2015
- Functional Swift Conf 2014
- CocoaConf Videos
- Awesome iOS Conferences
WWDC Presentations
- Search through WWDC Presentations
- Code Samples From WWDC
- WWDC Full Text WriteUps
- Protocol-Oriented Programming in Swift
- Make all Value Types Equatable
- Advanced NSOperations
- UI Testing in Xcode
- Continuous Integration made Easy in Xcode 7
- What's new in Xcode
- Swift in Practice
- Networking with NSURLSession
Other Video
- Swift Language 油Tube Channel
- Free Swift Lang Course
- Explaining the mutating keyword
- Swift tutorial Video Series
Posts
Animations and Front End Stuff
- Mixing SpriteKit with UIKit in iOS 9
- AdaptiveUI Animations and
- iOS Animations with AutoLayout and
- Metal and Swift
- Animating Constraints
- Advanced UITableViews
- SpriteKit as an intro to SceneKit
Application Structure / Architecture
- You Used To Inject Me In Your Constructor
- Swift Inject Dependency Injection
- Class or Struct?
- RE: Class or Struct
- Uber Jetstream
- Mutating Funcs in Swift Structs
- MVVM in Swift
- Refractor the Mega Controller
- 250 Days of using VIPER Architecture with Swift
- Safer with VIPER
- Dependency Injection in Swift
- Preventing Massive View Controllers
- A Structy Model Layer
Associated Types and Objects
- 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
Closures
Collections / Sequences / Generators
- A quick guide to SequenceType
- Sequences and Generators in Swift
- Experimenting with Seqs and Generators
- Can we please make a standard style for closures?
- 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
Command Line and Swift Scripting
- Swift Scripting
- Learn Swift by running Scripts
- Scripting in Swift is Pretty Awesome!
- Swiftline
- How Swift Scripting was used to make iOS Cookies
- Writing an Xcode Plugin with Swift
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
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
- Deques, Queues, and Lists in Swift
- Contiguous Arrays in Swift
- NSArrays are implemente with Circular Buffers
- Open sourced CFArray
- Abstract Algebraic Structures in Swift 2
- Patricia/Radix trees for Swift
- Genetic Programming in Swift
- Finger Trees in Swift
- Neural Networks in Swift
- Swift AI
- Lazy infinite streams
- Naive Bayes Classifier
- Swix Swift Matrix Math Library
- Red Black Tree
- Tensor Methods in Swift
- Sort Utils
- Disjoint Sets
- Metaprogrammable
- Binary Tree
Design Patterns
- Swift Design Patterns
- Template Method Pattern in Swift
- Design Patterns Library in Swift
- Creating a Cocoa Bindings Observable Pattern in Swift
- Observer Pattern in Swift
- The Sin of Singletons
- The Null Object Pattern
- Segues > Delegation
- Functions as Factories
- Conform to Objective C Protocols in Swift
- Optional Protocol Methods
- The Builder Pattern and Fluent Interface
- A Better NSNotificationCenter Observer Pattern
- Key Value Coding in Swift
- Exploring KVO Alternatives in Swift
Development
- Result Driven Development
- Library Oriented Programming
- * Oriented Programming
- Hole Driven Development
- Entering a New Codebase
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
- Pattern Matching
- Swift's pattern-matching switch statement
- Custom pattern matching in Swift
- Advanced Swift Pattern Matching in Detail
- Control Flow & Pattern Matching
- Ranges and Intervals in Swift
- More Pattern Matching Examples
- What is a variadic parameter?
- Pattern Matching in Swift
- Swift Pattern Matching in Detail
- Pattern Matching with an if case
- Pattern Matching with Recursive Values in Swift
Error Handling
- Easy Error Handing
- Swift Failiable Initializers
- Swift 2.0: Why Guard is Better than If
- Swift 2 Error Handling
- Swift 2 Error Handling and Pattern Matching
- Guard and Defer
- 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
Extensions
Functional Programming in Swift
- Deriving higher order functions in Swift
- Swiftz Functional Programming Library
- Swiftx Functional Data Types
- Functional View Controllers
- Covariance and Contravariance in Swift 2.1
- Monads & C# Tasks in Swift
- Introduction to Function Currying in Swift
- Practical Use of Curried Functions in Swift
- Composing functions in Swift
- Swift is not functional
- Functional Paradigms in Swift
- Functional Programming in the Swift Language
- Map and FlatMap demystified
- Using Local Closures with Swift
- Function Params are Tuples in Swift
- Lenses in Swift
- Prelude Library
- Functional Programming in a Playground
- Functional Programming as a Functionalist
- Object Oriented Functional Programming
- Functional Programming in Swift
- NatashaTheRobot Explains Functional Programming
- Make Swift More Functional
- FP in Swift
- Thinking Functionally Using Swift
- Practical Declarative and Functional Swift
- Functional Notification Pattern
- The monad among us
- Functors, Applicatives, and Monads in Swift
- Futures and Latency as an effect in Swift
- Continuation Passing Style in Swift
- An intro to Continuation Passing Style in Swift
- Proof in Functions
- Functional Thinking
- Chris Eidhof Functional Swift Talk
- Transducers and Reducers in Swift 2
- Lenses, Prisms, Isos in Swift 2 pencil2
- Better Recursion with Swift
- Folds in Swift
- Swift Adventures in Monad Land
- Functor and Monad in Swift
- Llama Calculus
- FingerTrees
- FizzBuzz with infinite streams
- 6 Killer Functional Swift Features
- Thunks in Swift
- 7 Habits for more functional Swift
- Y Combinators in Swift
- Arrows in Swift
- Understanding Reduce in Swift
- Monadic Functions in Swift
- Lazy Streams in Swift
- Funky Functional Programming Tools and Experiements
- Functional Memoization in Swift
- Reader Monad in Swift
- Writer Monad in Swift
- Back to the Futures with Swift
Functional Reactive Programming in Swift
- MVVM + FRP
- Introduction
- Reacting to Events
- ReactiveCocoa 4.0 Info
- The Difference between RxSwift and ReactiveCocoa ,
- FRP in Swift 2.0
- Functional Reactive Programming in an Imperative World
- RAC 3 with Ash Furrow , and some other nice
- FRP with RAC in Swift
- Learning RxSwift
- Upgrading to RxSwift
- FRP is a forbidden term
- What is FRP? On StackOverflow
- From RAC to RxSwift: The (Mini) Survival Guide
GCD and NSOperation
- Basics
- Methods of concurrency — GCD, agents, tasks and invocations
- Code at the end of the queue
- Delaying Code Execution through Closures
Generics
- Generic Arrays in Swift 2.0
- The shortcomings of generic protocols
- Generics in Swift, Part 1
- Generics in Swift, Part 2
Initializers
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
Language Comparisons
- Comparing Swift and Javascript
- C++ Advice to Swift Devs
- Swift Protocols vs Java 8 Interfaces
- Learning Swift from Haskell and corresponding
- Swift vs Golang
LLVM Compiler
- Swift Intermediate Language
- Using the LLVM API With Swift
- LLVM and Swift
- Swift Performance
- Swift 2 Under the Hood
Objective C Transitioning to Swift
Open Source Swift
Operator Overloading
Opinions about Swift
Optionals and Types
- Typelift Community Repo
- Swift Optionals Made Simple
- Swift's Type System
- Every Kind of Optional
- Understanding Downcasting Operators in Swift
- Swift Manual Retain/Release
- How I handle Optionals in Swift
- How to unwrap an optional in 9 different ways
- Optional Protocol Methodsin Pure Swift
- Make a DSL in Swift
- Type-Erased Wrappers in Swift
- Swift MetaTypes
- Typing the Knot in Swift
Other
- @autoclosure, @inline, @noescape, and @noreturn Keywords
- How to use @noescape
- How to use @autoclosure
- Magic Methods in Swift
- weak vs unowned
- Swift weak references
Problem Solving
Production Swift
- How Carthage works
- Bottom Up Programming in Swift
- Make a Cocoapods Framework
- Lessons from Production Swift
Protocol Oriented Programming in Swift 2
- Protocols in Swift
- POP is OOP Thesis
- Standard Template Protocols
- Protocol Oriented MVVM ,
- Functional thinking via Protocol Extensions
- Protocol Extensions vs Type Extensions
- Swift Diagrams Playground for P.O.P.
- Gist covers whatever went on in the official presentation
- What are the advantages?
- Another look into the concept of P.O.P.
- If you're subclassing, you're doing it wrong. POP and VOP explained
- Every Swift Value Type Should be Equatable
- Protocol Oriented Programming through UIKit
- Protocols in Swift
- Ray Wenderlich intro to P.O.P.
- Protocol Extensions and the death of the Pipe forward operator
- How Protocol Oriented Programming could still improve
- THe Swift Protocol Proposal
- Swift Default Protocol Implementations
- Mixins and Traits in Swift 2.0
- Minimal Swift 2.1 Protocol Coformance
- Favor Mixins over inheritance
- Use Protocol Composition
- The 55 Standard Lib Protocols Broken Down
- Can Swift have Dependent Types?
- More Misunderstanding of Dependent Types
- 55 Standard Library Swift Protocols
- Current Recommmended Protocol Usage
- POP in Swift vs ObjC and C++
- POP Utility Belt
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
- What Realm does that Core Data doesn't
- Reddit Thread
- A look into Realm's Core DB Engine
- Working with Realm
Security
Swift Language
- Best of Swift 2
- New Features in Swift 2
- Switching your brain to Swift
- Short Circuit Evaluation
- How Swift makes your life better
- Emerging best practices in Swift
- Swift Thinking
- Hidden Gems in Swift
- Making Friends with Value Types
- Catching up with Swift
- Idiomatic Swift
Text Manipulation
- RegularExpressions in Swift
- Creating a Lexer in Swift
- Creating an Abstract Syntax Tree Parser in Swift
- Part 2 of the AST
- String to Number Parser
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
Web Services and Networking
- SwiftHTTPStatusCodes
- Calling APIs and Parsing JSON with Swift
- Parsing Embedded JSON and Arrays in Swift
- Real World JSON Parsing
- Efficient JSON Parsing with Functional Concepts
- Calling a REST Api in Swift
- How to Make REST API Calls and Parse JSON with Swift
- HTTP in Swift
- Reachability Library
- JSON in Swift
- Functional JSON Parsing
- NSURLSession Basics
- Background Downloads
- An AlamoFire Router
- Moya: Network Abstraction Layer written in Swift
Web Services - Other
- CloudKit Introduction
- Create a Data Access Layer with SQLite.swift and Swift 2
- Using YapDatabase
- { JSON, Swift, and Type Safety }
- MagicalRecord loves Swift
- Networking with Monads
- Swift-MongoDB