🕊️ Swift
Типы, опционалы, циклы, функции, async/await, коллекции и фреймворки Apple.
Шпаргалки · Программирование · #swift #ios #apple
IDE и запуск
Xcode (macOS), VS Code (серверный Swift). swift run, swift build, Swift Package Manager (Package.swift). Онлайн: Swift Playgrounds.
Типы данных
let n: Int = 1 // let константа, var переменная
var s: String = "a"; let d: Double = 1.5; let b = true
var opt: Int? = nil // опционал
let t = (1, "a"); var arr = [1, 2]; var dict = ["a": 1]
struct User { var id: Int; var name: String }
enum Role { case admin, user }
Операторы
+ - * / %, == != < >, && || !, ?? (по умолчанию для опционала), ?., ! (принудительно развернуть), ... / ..< (диапазоны).
Циклы
for i in 0..<3 {}
for (i, x) in arr.enumerated() {}
while cond {}
repeat {} while cond
Функции
func add(_ a: Int, to b: Int = 0) -> Int { a + b }
let sq = { (x: Int) in x * x }
if let v = opt { print(v) }
guard let v = opt else { return }
Встроенные
print, min, max, abs, zip, .count, .isEmpty, .sorted(), .map, .filter, .reduce, Int("5").
Асинхронность
func load() async throws -> String { try await Task.sleep(for: .seconds(1)); return "ok" }
async let a = load(); async let b = load()
let r = try await (a, b)
actor Counter { var n = 0 } // безопасное состояние
Коллекции
arr.map { $0 * 2 }.filter { $0 > 2 }
dict["b", default: 0] += 1
let s: Set<Int> = [1, 2]
Фреймворки по задачам
SwiftUI, UIKit (интерфейс), Combine (потоки), Core Data, SwiftData (БД), URLSession (сеть), XCTest, Swift Testing (тесты), Vapor (сервер).