Простые приложения на Swift
Простые приложения на Swift
Swift одинаково пригоден для iOS/macOS и для консольных утилит (swift run). Foundation даёт файлы, JSON (Codable), HTTP (URLSession). Примеры ниже — без SwiftUI; UI — в разделе про async и платформенных главах.
После первой программы и типов.
Как запускать примеры из главы
- Сохраните код в
имя.swift. - Команда:
swift имя.swift(илиswift runв Swift Package). - Проверка:
swift --version(Swift 5.9+).
Генератор паролей
Как запустить
- Файл:
password.swift - Команда:
swift password.swift - Результат: строка пароля в терминале.
import Foundation
func generatePassword(length: Int = 16) -> String {
let chars = Array("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%")
return String((0..<length).map { _ in chars.randomElement()! })
}
print(generatePassword())
Для паролей в продакшене используйте SecRandomCopyBytes из Security framework.
Сортировщик текстового файла
Как запустить
- Файл:
sort.swift - Подготовка:
input.txtиoutput.txt(пути вsortLines). - Команда:
swift sort.swift - Результат: отсортированный файл на диске.
import Foundation
func sortLines(input: URL, output: URL) throws {
let text = try String(contentsOf: input, encoding: .utf8)
let lines = text
.split(whereSeparator: \.isNewline)
.map { String($0).trimmingCharacters(in: .whitespaces) }
.filter { !$0.isEmpty }
.sorted { $0.localizedCompare($1) == .orderedAscending }
try lines.joined(separator: "\n").appending("\n")
.write(to: output, atomically: true, encoding: .utf8)
}
Консольный калькулятор
Как запустить
- Файл:
calc.swift— добавьте вызовыprint(calculate(...))внизу. - Команда:
swift calc.swift - Результат:
Optionalс числом илиnilпри ошибке.
func calculate(_ a: Double, _ b: Double, _ op: Character) -> Double? {
switch op {
case "+": return a + b
case "-": return a - b
case "*": return a * b
case "/": return b == 0 ? nil : a / b
default: return nil
}
}
Optional вместо исключений для "некорректной" операции — типичный стиль Swift.
Трекер задач (Codable)
Как запустить
- Файл:
tasks.swift— вmainвызовитеload/save. - Команда:
swift tasks.swift - Результат: файл
tasks.json.
Код ITЗагрузка примера кода…
HTTP GET через URLSession
Как запустить
- Файл:
fetch.swift - Команда:
swift fetch.swift - Нужно: сеть; скрипт ждёт ответ ~1 с (
RunLoop). - Результат: HTTP-код и начало HTML в консоли.
Код ITЗагрузка примера кода…
Сканер каталога
Как запустить
- Файл:
scan.swift - Команда:
swift scan.swift - Результат: число файлов и суммарный размер.
Код ITЗагрузка примера кода…
Характерный пример для Swift — enum и безопасные значения
Как запустить
- Файл:
parse_port.swift - Команда:
swift parse_port.swift - Результат:
443для валидного порта,ошибкадля0иx.
enum ParseError: Error { case invalidPort }
func parsePort(_ s: String) throws -> UInt16 {
guard let value = UInt16(s), value > 0 else { throw ParseError.invalidPort }
return value
}
for sample in ["443", "0", "x"] {
do { print(try parsePort(sample)) }
catch { print("\(sample): ошибка") }
}
enum с associated values и throws — основа API Apple и серверного Swift (Vapor).
См. также: Codable и данные · async/await · ООП
Базовый разбор HTTP и HTTPS находится в отдельной статье — HTTP как основа веб-интеграций.