💡Архітектура 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
💡Поглиблена робота з прев’ю в Xcode
👉 Макрос
👉 Протокол
🇺🇦 iOSDevUA
👉 Макрос
@Previewable дає змогу уникнути створення окремих SwiftUI‑структур, потрібних лише для перегляду. Однією‑єдиною стрічкою ви створюєте прев’ю та передаєте йому стан.👉 Протокол
PreviewModifier допомагає збирати багаторазові набори тестових даних, які легко підключати до різних прев’ю.🇺🇦 iOSDevUA
Swift with Majid
The power of previews in Xcode
Previews in Xcode become more powerful every year. Previews in Xcode are not about SwiftUI; you can use them even with UIKit. This week, we will talk about enhancing Previewable and PreviewModifier types, allowing us to build reusable preview environments.
🔥1
💡У цій публікації розглядаэться, як розширити Text у SwiftUI, щоб гнучко налаштовувати будь‑які його частини — від окремих слів до довших фрагментів.
👉 https://danielsaidi.com/blog/2025/04/08/supercharging-swiftui-text-with-dynamic-content-styling
🇺🇦 iOSDevUA
👉 https://danielsaidi.com/blog/2025/04/08/supercharging-swiftui-text-with-dynamic-content-styling
🇺🇦 iOSDevUA
💡Підбірка демо‑проєктів для TextRenderer
🇺🇦 iOSDevUA
TextRenderer — новий протокол у SwiftUI, що відкриває безліч крутих можливостей для анімації та ефектів із текстом. За посиланням знайдете колекцію прикладів: частина реалізована на чистому Swift, інша — з використанням Metal.🇺🇦 iOSDevUA
This media is not supported in your browser
VIEW IN TELEGRAM
💡Додаток для тренувань на watchOS із HealthKit + SwiftUI
Той, хто бодай раз писав застосунок для Apple Watch, знає, скільки проблем може виникнути вже на етапі з’єднання: затяжні синхронізації, копіювання символів, випадкові втрати attach, обмеження фіч тощо.
Я добре з цим знайомий: постійно створюю віджети й stand‑alone‑рішення для годинника й навіть консультував стартап під час розробки власного протоколу. Тож кожен завершений (або хоча б доведений до робочої точки) приклад — справді цінний.
Нині Strava майже монополіст серед фітнес‑трекерів, але альтернативи є. Один із них — відкритий проєкт від 0Itsuki0, де автор ділиться досвідом роботи з воркаутами:
1. SwiftUI: простий додаток для тренувань із HealthKit (частина 1)
2. SwiftUI: читання даних із HealthKit
3. SwiftUI: поділ тренування на під‑активності
🛠 Увесь код доступний на GitHub: https://github.com/0Itsuki0/SwiftUI_SimpleWorkoutApp
🇺🇦 iOSDevUA
Той, хто бодай раз писав застосунок для Apple Watch, знає, скільки проблем може виникнути вже на етапі з’єднання: затяжні синхронізації, копіювання символів, випадкові втрати attach, обмеження фіч тощо.
Я добре з цим знайомий: постійно створюю віджети й stand‑alone‑рішення для годинника й навіть консультував стартап під час розробки власного протоколу. Тож кожен завершений (або хоча б доведений до робочої точки) приклад — справді цінний.
Нині Strava майже монополіст серед фітнес‑трекерів, але альтернативи є. Один із них — відкритий проєкт від 0Itsuki0, де автор ділиться досвідом роботи з воркаутами:
1. SwiftUI: простий додаток для тренувань із HealthKit (частина 1)
2. SwiftUI: читання даних із HealthKit
3. SwiftUI: поділ тренування на під‑активності
🛠 Увесь код доступний на GitHub: https://github.com/0Itsuki0/SwiftUI_SimpleWorkoutApp
🇺🇦 iOSDevUA
👍3❤1
💡Чому написати калькулятор — насправді складно
Для багатьох із нас калькулятор був чи не першим додатком, написаним ще на Basic чи Pascal. Здається, усе просто: базові математичні операції вже визначені. Та варто зануритися глибше, і з’ясовується, що обчислення з плаваючою точкою, порядок виконання, межі точності й різні алгоритми округлення роблять «звичайний» калькулятор справжнім викликом.
У цій розповіді пояснюють, чому математика не така очевидна, як здається, й чому калькулятор на Android частіше дає коректні результати, ніж стандартний на iOS.
🇺🇦 iOSDevUA
Для багатьох із нас калькулятор був чи не першим додатком, написаним ще на Basic чи Pascal. Здається, усе просто: базові математичні операції вже визначені. Та варто зануритися глибше, і з’ясовується, що обчислення з плаваючою точкою, порядок виконання, межі точності й різні алгоритми округлення роблять «звичайний» калькулятор справжнім викликом.
У цій розповіді пояснюють, чому математика не така очевидна, як здається, й чому калькулятор на Android частіше дає коректні результати, ніж стандартний на iOS.
🇺🇦 iOSDevUA