Перейти к основному содержимому

Простые приложения на Swift

Разработчику Архитектору

Простые приложения на Swift

Swift одинаково пригоден для iOS/macOS и для консольных утилит (swift run). Foundation даёт файлы, JSON (Codable), HTTP (URLSession). Примеры ниже — без SwiftUI; UI — в разделе про async и платформенных главах.

После первой программы и типов.


Как запускать примеры из главы

  1. Сохраните код в имя.swift.
  2. Команда: swift имя.swift (или swift run в Swift Package).
  3. Проверка: 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 как основа веб-интеграций.