Стандартная библиотека Swift: полный обзор для iOS/macOS

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Стандартная библиотека Swift (iOS/macOS): полный обзор

Стандартная библиотека Swift — это фундаментальный набор типов, протоколов и функций, на котором строится вся разработка под iOS, macOS, watchOS и tvOS. В отличие от многих языков, где стандартная библиотека минималистична, Swift предлагает богатый инструментарий прямо "из коробки". В этой статье мы подробно разберём ключевые компоненты библиотеки, которые используются в повседневной разработке.

Основные типы данных и протоколы

Фундамент библиотеки составляют примитивные типы и протоколы, обеспечивающие единообразие работы с данными.

  • Протоколы равенства и сравнения: Equatable, Comparable, Hashable — позволяют сравнивать и хэшировать объекты.
  • Протоколы представления: CustomStringConvertible, CustomDebugStringConvertible — для строкового описания объектов.
  • Базовые типы: Int, Double, Bool, String, Character — переопределены для максимальной производительности.
// Пример использования протоколов
struct Person: Equatable, CustomStringConvertible {
    let name: String
    let age: Int
    
    var description: String {
        return "\(name), \(age) лет"
    }
}

let alice = Person(name: "Алиса", age: 30)
let bob = Person(name: "Боб", age: 25)
print(alice == bob) // false
print(alice) // "Алиса, 30 лет"

Коллекции: массивы, словари и множества

Swift предоставляет три основных типа коллекций, оптимизированных для разных сценариев использования.

Массивы (Array)

Упорядоченные коллекции с произвольным доступом. Поддерживают динамическое расширение и сокращение.

var numbers: [Int] = [1, 2, 3, 4, 5]
numbers.append(6)
numbers.remove(at: 0)
let filtered = numbers.filter { $0 > 3 }
print(filtered) // [4, 5, 6]

Словари (Dictionary)

Неупорядоченные коллекции "ключ-значение". Ключи должны быть Hashable.

var capitals: [String: String] = [
    "Россия": "Москва",
    "Франция": "Париж",
    "Япония": "Токио"
]
capitals["Германия"] = "Берлин"
if let russiaCapital = capitals["Россия"] {
    print("Столица России - \(russiaCapital)")
}

Множества (Set)

Неупорядоченные коллекции уникальных элементов. Идеальны для проверки принадлежности и математических операций.

let setA: Set = [1, 2, 3, 4]
let setB: Set = [3, 4, 5, 6]
let intersection = setA.intersection(setB)
let union = setA.union(setB)
print(intersection) // [3, 4]
print(union) // [1, 2, 3, 4, 5, 6]

Работа со строками

Строки в Swift — это коллекции символов Unicode, что делает работу с интернационализацией максимально простой.

  • Индексы строк: startIndex, endIndex, index(_:offsetBy:) — безопасная навигация по символам.
  • Интерполяция: "\(переменная)" — встраивание значений в строку.
  • Многострочные литералы: """ """ — удобное форматирование.
let greeting = "Привет, мир!"
let firstChar = greeting[greeting.startIndex] // "П"
let index = greeting.index(greeting.startIndex, offsetBy: 7)
let substring = greeting[index...] // "мир!"

// Интерполяция и многострочность
let name = "Свифт"
let description = """
Язык \(name) используется для разработки
под iOS и macOS.
"""
print(description)

Опциональные типы и работа с nil

Swift предлагает безопасную работу с отсутствующими значениями через опциональные типы. Это одна из ключевых особенностей языка.

var optionalName: String? = "Алексей"
// Optional binding
if let name = optionalName {
    print("Привет, \(name)!")
} else {
    print("Имя не указано")
}

// Nil-coalescing operator
let displayName = optionalName ?? "Гость"
print("Пользователь: \(displayName)")

// Optional chaining
class Address {
    var city: String?
}
class Person {
    var address: Address?
}
let person = Person()
let city = person.address?.city ?? "Неизвестный                    

Рекомендаций