I
iOS Broadcast
@ios_broadcast3.5K подп.
1.4Kпросмотров
39.3%от подписчиков
11 марта 2026 г.
📷 ФотоScore: 1.5K
🐥 Фишки Swift, о которых многие забывают Swift оброс синтаксическим сахаром, и часть классных фич теряется в шуме. По мелким фишкам даже пишутся целые статьи, но гораздо полезнее перечитывать официальный гайд по языку. Собрал для вас несколько фишек, какие сам часто использую: 1. Паттерн‑матчинг в switch let value: Int? = Int.random(in: 0...10) switch value { case let .some(v) where v > 5: print("Большое число: &#092;(v)") case let .some(v): print("Маленькое число: &#092;(v)") case .none: print("nil") } let .some(v) — это как if let, но прямо внутри switch, плюс можно сразу вешать дополнительные условия через where 2. Нюансы работы со строками Со строками в Swift раньше было больно работать, но у стандартной библиотеки есть несколько новых фишек: 🔵Безопасные индексы вместо str[i] let s = "Привет" let firstIndex = s.startIndex let secondIndex = s.index(after: firstIndex) let secondChar = s[secondIndex] // "р" 🔵Срезы: let prefix = s.prefix(3) // "При" let suffix = s.suffix(2) // "ет" 🔵Реальная задача - обрезать строку до N символов и добавить многоточие: func truncated(_ string: String, limit: Int) -> String { guard string.count > limit else { return string } let endIndex = string.index(string.startIndex, offsetBy: limit) return String(string[string.startIndex..<endIndex]) + "…" } truncated("Привет, мир!", limit: 6) // "Привет…" 🔵Вместо NSRange/NSString давно можно обойтись чистым Swift: let text = "https://example.com - мой сайт" if let range = text.range(of: "https://") { let prefix = text[..<range.lowerBound] // перед URL let urlPart = text[range.lowerBound...] // начиная с URL print(prefix) // "" print(urlPart) // "https://example.com - мой сайт" } 🔵Вообще работать со строкой можно как с обычной коллекцией: let sentence = "Hello, Swift world!" let words = sentence .split { &#036;0.isWhitespace || &#036;0.isPunctuation } .map(String.init) print(words) // ["Hello", "Swift", "world"] 3. Массивы 🔵Иногда нужно получить массив фиксированной длины, уже заполненный значением по умолчанию, это можно сделать через конструктор: let zeros = Array(repeating: 0, count: 10) // [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] let placeholders = Array(repeating: "—", count: 5) // ["—", "—", "—", "—", "—"] 🔵Еще часто забывают про reduce(into:). Если обычный reduce возвращает новый массив/значение, то reduce(into:) позволяет изменять уже существующую структуру без лишних копий let names = ["Alice", "Bob", "Eve", "Alex", "Ben"] let grouped = names.reduce(into: [Character: [String]]()) { result, name in guard let first = name.first else { return } result[first, default: []].append(name) } // ["A": ["Alice", "Alex"], "B": ["Bob", "Ben"], "E": ["Eve"]] По сути — мини‑groupBy на стандартной библиотеке. 🔵 zip — проход по двум массивам параллельно let titles = ["Intro", "Chapter 1", "Chapter 2"] let pages = [1, 5, 17] for (title, page) in zip(titles, pages) { print("&#092;(title) начинается на странице &#092;(page)") } 🔴Здесь важно помнить: длина берётся по минимальному из двух массивов — лишние элементы отбрасываются. 🔵Срезы массивов и prefix/suffix работают и тут: let numbers = [1, 2, 3, 4, 5, 6] let firstThree = numbers.prefix(3) // [1, 2, 3] let lastTwo = numbers.suffix(2) // [5, 6] // Срез → обратно в Array при необходимости: let firstThreeArray = Array(firstThree) Ставь 👍 если нашел для себя что-то новое и 🤔 если знал все из этого списка
1.4K
просмотров
3407
символов
Да
эмодзи
Да
медиа

Другие посты @ios_broadcast

Все посты канала →
🐥 Фишки Swift, о которых многие забывают Swift оброс синтак — @ios_broadcast | PostSniper