💡Вийшов перший стабільний реліз Swiftly – офіційного менеджера версій Swift
Хоча актуальна версія Swift за замовчуванням входить до складу Xcode, іноді може знадобитися інша версія, наприклад, для створення серверних сервісів або CLI-інструментів.
Раніше встановлення потрібної версії Swift разом із залежностями вимагало ручних дій, що часто призводило до помилок.
🛠 У цьому релізі Swiftly став частиною Swift toolchain.
Крім того, додано підтримку macOS, що дозволяє встановлювати Swift окремо від Xcode.
Серед основних можливостей:
➡️ Встановлення кількох тулчейнів (як стабільних релізів, так і сніпшотів).
➡️ Оновлення встановлених тулчейнів до актуальної версії.
➡️ Перегляд доступних версій для встановлення через list-available.
➡️ Використання конкретного тулчейна в рамках проєкту через файл .swift-version.
➡️ Запуск команд із вибраним тулчейном за допомогою підкоманди run.
📖 Офіційна новина на сайті Swift: Introducing Swiftly.
🇺🇦 iOSDevUA
Хоча актуальна версія Swift за замовчуванням входить до складу Xcode, іноді може знадобитися інша версія, наприклад, для створення серверних сервісів або CLI-інструментів.
Раніше встановлення потрібної версії Swift разом із залежностями вимагало ручних дій, що часто призводило до помилок.
🛠 У цьому релізі Swiftly став частиною Swift toolchain.
Крім того, додано підтримку macOS, що дозволяє встановлювати Swift окремо від Xcode.
Серед основних можливостей:
➡️ Встановлення кількох тулчейнів (як стабільних релізів, так і сніпшотів).
➡️ Оновлення встановлених тулчейнів до актуальної версії.
➡️ Перегляд доступних версій для встановлення через list-available.
➡️ Використання конкретного тулчейна в рамках проєкту через файл .swift-version.
➡️ Запуск команд із вибраним тулчейном за допомогою підкоманди run.
📖 Офіційна новина на сайті Swift: Introducing Swiftly.
🇺🇦 iOSDevUA
GitHub
GitHub - swiftlang/swiftly: A Swift toolchain installer and manager, written in Swift.
A Swift toolchain installer and manager, written in Swift. - swiftlang/swiftly
💡Чому краще уникати Group у SwiftUI
На відміну від
🇺🇦 iOSDevUA
На відміну від
VStack або HStack, елемент Group у SwiftUI може поводитися непередбачувано. Наприклад, у симуляторі та в Canvas-перегляді його рендеринг може відрізнятися. Також модифікатори застосовуються по-різному: деякі — лише один раз, інші — окремо для кожного дочірнього елемента. Тому для більш передбачуваної поведінки краще обирати інші контейнерні компоненти.🇺🇦 iOSDevUA
chris.eidhof.nl
Why I Avoid Group — Chris Eidhof
❤3
💡Мутаційне тестування у великому проєкті
Мутаційне тестування — це підхід, за якого у код навмисно вносяться дрібні зміни (так звані “мутації”), щоб перевірити, чи зможуть існуючі тести їх виявити. У світі Swift для цього є open source інструмент — Muter, який підтримує велику кількість різних типів мутацій.
У статті описується досвід застосування Muter у масштабному проєкті, де було понад 1000 тестів та згенеровано 1657 “мутантів”. Розглядаються труднощі, результати та як масштабувати підхід для великих кодових баз.
🇺🇦 iOSDevUA
Мутаційне тестування — це підхід, за якого у код навмисно вносяться дрібні зміни (так звані “мутації”), щоб перевірити, чи зможуть існуючі тести їх виявити. У світі Swift для цього є open source інструмент — Muter, який підтримує велику кількість різних типів мутацій.
У статті описується досвід застосування Muter у масштабному проєкті, де було понад 1000 тестів та згенеровано 1657 “мутантів”. Розглядаються труднощі, результати та як масштабувати підхід для великих кодових баз.
🇺🇦 iOSDevUA
GitHub
GitHub - muter-mutation-testing/muter: 🔎 Automated mutation testing for Swift 🕳️
🔎 Automated mutation testing for Swift 🕳️. Contribute to muter-mutation-testing/muter development by creating an account on GitHub.
❤1💩1
💡Bindings у SwiftUI
Chris Eidhof пояснює, чому в продакшн-коді варто уникати використання
🇺🇦 iOSDevUA
Chris Eidhof пояснює, чому в продакшн-коді варто уникати використання
Binding(get:set:). Такий підхід може спричинити проблеми з продуктивністю, ускладнює підтримку та тестування коду. У статті детально розглядаються альтернативи та способи зробити роботу з Binding більш надійною.🇺🇦 iOSDevUA
chris.eidhof.nl
Bindings — Chris Eidhof
❤3
This media is not supported in your browser
VIEW IN TELEGRAM
💡Ефект сяяння тексту в поєднанні з numericText
Демонструється приклад доволі простої анімації з приємним візуальним враженням. Для її реалізації потрібен масив із кількома кольорами, декілька тіней, а також
🇺🇦 iOSDevUA
Демонструється приклад доволі простої анімації з приємним візуальним враженням. Для її реалізації потрібен масив із кількома кольорами, декілька тіней, а також
contentTransition із numericText.🇺🇦 iOSDevUA
❤7👍5
💡Архітектура SwiftData: шаблони та практики
SwiftData стала помітним кроком уперед у сфері зберігання даних, маючи на меті замінити Core Data більш інтуїтивним рішенням, яке простіше інтегрувати зі SwiftUI.
Однак залишається кілька важливих питань:
• Як правильно проєктувати застосунок на базі SwiftData?
• Чи можна повністю покладатися на
• Як бути з бізнес-логікою?
• Як побудувати структуру коду, щоб забезпечити надійність та простоту тестування?
У великій статті за посиланням ви знайдете відповіді на ці та інші запитання:
• Як структурувати моделі даних
• Де розміщувати бізнес-логіку
• Як писати модульні тести
• Як налаштувати роботу з Preview у Xcode
• Як інтегрувати CloudKit
• Як підготуватися до майбутніх змін на рівні шарів застосунку
🇺🇦 iOSDevUA
SwiftData стала помітним кроком уперед у сфері зберігання даних, маючи на меті замінити Core Data більш інтуїтивним рішенням, яке простіше інтегрувати зі SwiftUI.
Однак залишається кілька важливих питань:
• Як правильно проєктувати застосунок на базі SwiftData?
• Чи можна повністю покладатися на
@Model та @Query, чи все ж варто абстрагувати їх за протоколами для більшої гнучкості?• Як бути з бізнес-логікою?
• Як побудувати структуру коду, щоб забезпечити надійність та простоту тестування?
У великій статті за посиланням ви знайдете відповіді на ці та інші запитання:
• Як структурувати моделі даних
• Де розміщувати бізнес-логіку
• Як писати модульні тести
• Як налаштувати роботу з Preview у Xcode
• Як інтегрувати CloudKit
• Як підготуватися до майбутніх змін на рівні шарів застосунку
🇺🇦 iOSDevUA
AzamSharp
Swiftdata Architecture Patterns And Practices
Blog about iOS development and musings on technology
❤2👍1
💡Новий реліз Alex — альтернатива Cursor для Xcode
Вийшов черговий реліз Alex, про який я вже кілька разів згадував у каналі. Нових функцій — безліч, тож якщо ви ще не спробували, саме час!
🇺🇦 iOSDevUA
Вийшов черговий реліз Alex, про який я вже кілька разів згадував у каналі. Нових функцій — безліч, тож якщо ви ще не спробували, саме час!
🇺🇦 iOSDevUA
❤1
💡Сучасні практики роботи з URL у Swift
Використання новітніх API з пакету Foundation для формування (і подальшого опрацювання) URL не тільки спрощує код, але й знижує ймовірність помилок чи критичних збоїв.
У своїй статті Джон Санделл детально аналізує, як
🇺🇦 iOSDevUA
Використання новітніх API з пакету Foundation для формування (і подальшого опрацювання) URL не тільки спрощує код, але й знижує ймовірність помилок чи критичних збоїв.
У своїй статті Джон Санделл детально аналізує, як
StaticString, макроси та можливість створювати URL на кшталт let url = #staticURL("https://t.me/iOSDevsUA") здатні вплинути на якість і стабільність додатка. Також він розглядає сучасні підходи до формування складних запитів, використовуючи функціональність з iOS 16.🇺🇦 iOSDevUA
Swift by Sundell
Modern URL construction in Swift | Swift by Sundell
How to combine Foundation’s latest URL APIs with Swift features like macros, to be able to work with both static and dynamic URLs in simpler and more predictable ways.
❤1
💡І ще один корисний матеріал для новачків і всіх, хто вивчає SwiftUI.
У ньому йдеться про роботу з вкладками (TabView), із прикладами й поясненнями.
Відмінний спосіб швидко освоїти базові підходи!
👉 https://www.avanderlee.com/swiftui/tabview-tabbed-views/
🇺🇦 iOSDevUA
У ньому йдеться про роботу з вкладками (TabView), із прикладами й поясненнями.
Відмінний спосіб швидко освоїти базові підходи!
👉 https://www.avanderlee.com/swiftui/tabview-tabbed-views/
🇺🇦 iOSDevUA
❤1
💡MCP для iOS-симулятора
Model-Context Protocol (MCP) — це вкрай популярний зараз стандарт для взаємодії LLM зі зовнішніми інструментами. Тепер його інтегрували і в iOS-симулятор, щоб AI міг працювати з інтерфейсом додатка безпосередньо. Завдяки цьому штучний інтелект може фактично взяти на себе функції QA, автоматично перевіряючи застосунок у симуляторі.
👉 https://github.com/joshuayoes/ios-simulator-mcp
🇺🇦 iOSDevUA
Model-Context Protocol (MCP) — це вкрай популярний зараз стандарт для взаємодії LLM зі зовнішніми інструментами. Тепер його інтегрували і в iOS-симулятор, щоб AI міг працювати з інтерфейсом додатка безпосередньо. Завдяки цьому штучний інтелект може фактично взяти на себе функції QA, автоматично перевіряючи застосунок у симуляторі.
👉 https://github.com/joshuayoes/ios-simulator-mcp
🇺🇦 iOSDevUA
GitHub
GitHub - joshuayoes/ios-simulator-mcp: MCP server for interacting with the iOS simulator
MCP server for interacting with the iOS simulator. Contribute to joshuayoes/ios-simulator-mcp development by creating an account on GitHub.
💡Матеріал про те, чому автор вирішив відмовитися від використання компонента Group у SwiftUI
👉 https://chris.eidhof.nl/post/why-i-avoid-group/
🇺🇦 iOSDevUA
👉 https://chris.eidhof.nl/post/why-i-avoid-group/
🇺🇦 iOSDevUA
chris.eidhof.nl
Why I Avoid Group — Chris Eidhof
👍2
💡Як писати git hooks на Swift
Swift підходить не тільки для створення консольних утиліт, а й для написання скриптів, які автоматично виконуватимуться перед або після коміту в Git. У згаданій статті демонструється приклад хука, що блокує коміт у master, якщо код містить print-виклики.
🇺🇦 iOSDevUA
Swift підходить не тільки для створення консольних утиліт, а й для написання скриптів, які автоматично виконуватимуться перед або після коміту в Git. У згаданій статті демонструється приклад хука, що блокує коміт у master, якщо код містить print-виклики.
🇺🇦 iOSDevUA
www.swifttoolkit.dev
Git Hooks 🤝 Swift
Use Git hooks in your Git repos to ensure standards and catch issues
🎬Нещодавно виклали велику добірку відео зі SwiftHeroes 2024.
Десятки цікавих доповідей, тож, можливо, знайдете для себе щось корисне. 👍
👉 https://www.youtube.com/playlist?list=PLfCiO1zYKkATN7rOAaU1lyNEWJ3sXeKXx
🇺🇦 iOSDevUA
Десятки цікавих доповідей, тож, можливо, знайдете для себе щось корисне. 👍
👉 https://www.youtube.com/playlist?list=PLfCiO1zYKkATN7rOAaU1lyNEWJ3sXeKXx
🇺🇦 iOSDevUA
👍2
💡Робота з модифікатором task у SwiftUI: приклади, особливості, пріоритети
➡️ Модифікатор task можна використовувати як інструмент для запуску асинхронного коду.
Автор наведеного матеріалу радить звернути увагу на цей модифікатор, особливо коли проєкт містить комбінацію окремих блоків
📖 У цій статті розглянуто різні варіанти використання
🛠 А тут можна переглянути демопроєкт.
🇺🇦 iOSDevUA
➡️ Модифікатор task можна використовувати як інструмент для запуску асинхронного коду.
Автор наведеного матеріалу радить звернути увагу на цей модифікатор, особливо коли проєкт містить комбінацію окремих блоків
onAppear і Task.📖 У цій статті розглянуто різні варіанти використання
task у реальному проєкті.🛠 А тут можна переглянути демопроєкт.
🇺🇦 iOSDevUA
❤1
💡SharingGRDB — альтернатива для SwiftData від авторів Point-Free
По суті, це об’єднання бібліотек Sharing та GRDB.swift (автор — Ґвендаль Руе). Новий пакет надає цілий набір інструментів, здатних замінити чимало сценаріїв використання SwiftData.
SharingGRDB забезпечує безпосередній доступ до бази даних SQLite (зокрема до джойнів, агрегатних запитів та багато чого іншого).
📖 Документація і приклади запитів.
Приклади проєктів:
1. Case Studies — демонстрація можливостей бібліотеки.
2. SyncUps — фактично перевтілення застосунку Scrumdinger від Apple.
3. Reminders — застосунок зі списками, нагадуваннями й тегами.
🔗 Посилання на репозиторій.
🇺🇦 iOSDevUA
По суті, це об’єднання бібліотек Sharing та GRDB.swift (автор — Ґвендаль Руе). Новий пакет надає цілий набір інструментів, здатних замінити чимало сценаріїв використання SwiftData.
SharingGRDB забезпечує безпосередній доступ до бази даних SQLite (зокрема до джойнів, агрегатних запитів та багато чого іншого).
📖 Документація і приклади запитів.
Приклади проєктів:
1. Case Studies — демонстрація можливостей бібліотеки.
2. SyncUps — фактично перевтілення застосунку Scrumdinger від Apple.
3. Reminders — застосунок зі списками, нагадуваннями й тегами.
🔗 Посилання на репозиторій.
🇺🇦 iOSDevUA
❤2
💡Гайд із роботи зі SwiftUI Alert + приклади
Робота з алертами у SwiftUI відрізняється від звичного підходу в UIKit (але це не означає, що вона складніша).
📖 У простому туторіалі наведені приклади показу звичайних алертів, обробки дій і додавання локалізації.
🇺🇦 iOSDevUA
Робота з алертами у SwiftUI відрізняється від звичного підходу в UIKit (але це не означає, що вона складніша).
📖 У простому туторіалі наведені приклади показу звичайних алертів, обробки дій і додавання локалізації.
🇺🇦 iOSDevUA
💡Інтеграція SwiftUI з Rust-бібліотекою egui
Ось доволі незвичайна історія про те, як загальний каркас застосунку реалізували на SwiftUI, а рендеринг таблиць, вимогливих до продуктивності, винесли у Rust-бібліотеку egui.
👉 Вихідний код
👉 Відео результату
🇺🇦 iOSDevUA
Ось доволі незвичайна історія про те, як загальний каркас застосунку реалізували на SwiftUI, а рендеринг таблиць, вимогливих до продуктивності, винесли у Rust-бібліотеку egui.
👉 Вихідний код
👉 Відео результату
🇺🇦 iOSDevUA
Medium
Fast & Fluid: Integrating Rust egui into SwiftUI
Let’s be honest: the path we’re about to take in this article isn’t a simple one. If you’re considering this approach for your app, you…
❤2
💡Про гріди (Grid/LazyVGrid/LazyHGrid) у SwiftUI
Усе з прикладами та поясненнями, як завжди.
👉 https://www.avanderlee.com/swiftui/grid-lazyvgrid-lazyhgrid-gridviews/
🇺🇦 iOSDevUA
Усе з прикладами та поясненнями, як завжди.
👉 https://www.avanderlee.com/swiftui/grid-lazyvgrid-lazyhgrid-gridviews/
🇺🇦 iOSDevUA
❤2
💡Підтримка Swift у Copilot Code Review
Copilot Code Review — це AI‑агент від GitHub, який автоматично рев’ює ваш код: виявляє баги, проблеми з продуктивністю й одразу пропонує виправлення. Сервіс вийшов із бети, а разом із релізом додали повну підтримку Swift. Підключайте в свої проєкти й діліться враженнями!
🇺🇦 iOSDevUA
Copilot Code Review — це AI‑агент від GitHub, який автоматично рев’ює ваш код: виявляє баги, проблеми з продуктивністю й одразу пропонує виправлення. Сервіс вийшов із бети, а разом із релізом додали повну підтримку Swift. Підключайте в свої проєкти й діліться враженнями!
🇺🇦 iOSDevUA
👍2
💡Навряд чи це вам знадобиться, але тримайте: стаття про те, як компілювати застосунок Swift під різні платформи — і мова зовсім не про tvOS чи iPadOS.
👉 https://khanwinter.com/2025-03-29-Cross-Compiling-Swift/
🇺🇦 iOSDevUA
👉 https://khanwinter.com/2025-03-29-Cross-Compiling-Swift/
🇺🇦 iOSDevUA
Khanwinter
Khan's Blog · Cross Compiling Swift
There are multiple ways to cross-compile Swift on different platforms. I explored a few methods while building a Discord bot and a Bluesky bot.
👍1
💡Використання ключового слова defer у Swift у контексті async
Попри те, що на перший погляд
📖 У цій статті розглянуто низку прикладів: від під’єднання до бази даних до асинхронного завантаження даних.
🇺🇦 iOSDevUA
Попри те, що на перший погляд
defer виглядає необов’язковим, у сучасному Swift‑коді він може істотно спростити життя. Особливо корисний, коли у функції або замиканні є кілька потенційних точок виходу — та ще й у поєднанні з throws або async/await.📖 У цій статті розглянуто низку прикладів: від під’єднання до бази даних до асинхронного завантаження даних.
🇺🇦 iOSDevUA
🔥1