Как решить проблему с констрэинтами или как быть с ошибками вида «will attempt to recover by breaking constraint»?
Многие уже используют SwiftUI в проде или пет-проектах. Несмотря на это, UIKit никуда не уходит, а проблемы с автолэйаутом встречаются довольно часто.
Хотел бы напомнить про трюк, а если быть точнее, мастхэв-навык при поиске подобных проблемных вьюх с помощью стандартных инструментов Xcode.
Если вы встретите такую ошибку (или её вариации):
Запустите View Debugger и вставьте айдишник проблемной вьюхи в поле поиска слева внизу. Xcode автоматически подсветит её и уже после вы спокойно сможете устранить эту проблему.
⭐️ А ещё есть полезнейший сайт, который часто может помочь в таких ситуациях.
⭐️ Кстати, в базе знаний я делюсь своим опытом, и стараюсь наполнять разные разделы, один из которых — разбор различных проблем в разработке.
😃 iOS Dev
Многие уже используют SwiftUI в проде или пет-проектах. Несмотря на это, UIKit никуда не уходит, а проблемы с автолэйаутом встречаются довольно часто.
Хотел бы напомнить про трюк, а если быть точнее, мастхэв-навык при поиске подобных проблемных вьюх с помощью стандартных инструментов Xcode.
Если вы встретите такую ошибку (или её вариации):
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0xb82d450 H:[UIButton:0xb82ad50]-(NSSpace(20))-| (Names: '|':UIView:0xb82f360 )>
Запустите View Debugger и вставьте айдишник проблемной вьюхи в поле поиска слева внизу. Xcode автоматически подсветит её и уже после вы спокойно сможете устранить эту проблему.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Как автоматически обнаруживать утечки памяти с помощью UI-тестов
📖 Пол Пиелла написал отличную развёрнутую статью о том, как можно юзать функциональность, доступную нам аж с Xcode 13 (тогда появилась опция xcodebuild, генерирующая memory graph всякий раз, когда фэйлится тест XCTMemoryMetrics).
Эта фича так и осталась незамеченной многими, хотя при правильном использовании это мощнейший инструмент для обнаружения утечек памяти в приложениях.
Саму статью можно разбить на несколько важных частей:
1️⃣ Написание самого теста, чекающего использование памяти.
2️⃣ Генерация memory graph.
3️⃣ Разбор результатов и анализ графа.
Тут пригодится ещё один материал про разбор содержимого XCResult.
✅ Напомню, что в ноушне есть целый раздел по теории и вопросы по управлению памятью (в том числе и про шаги для предотвращения утечек).
😃 iOS Dev
📖 Пол Пиелла написал отличную развёрнутую статью о том, как можно юзать функциональность, доступную нам аж с Xcode 13 (тогда появилась опция xcodebuild, генерирующая memory graph всякий раз, когда фэйлится тест XCTMemoryMetrics).
Эта фича так и осталась незамеченной многими, хотя при правильном использовании это мощнейший инструмент для обнаружения утечек памяти в приложениях.
Саму статью можно разбить на несколько важных частей:
1️⃣ Написание самого теста, чекающего использование памяти.
2️⃣ Генерация memory graph.
3️⃣ Разбор результатов и анализ графа.
Тут пригодится ещё один материал про разбор содержимого XCResult.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Ещё одно приятное нововведение в Xcode 16
🚀 Теперь в ассетах можно найти все места в проекте, где используется картинка за пару мгновений.
Использование:
Легко можно найти лишние ресурсы + избежать потенциальных опечаток (ну и сэкономить немного времени).
😃 iOS Dev
Использование:
щелчок правой кнопкой мыши + Find References to Item
.Легко можно найти лишние ресурсы + избежать потенциальных опечаток (ну и сэкономить немного времени).
Please open Telegram to view this post
VIEW IN TELEGRAM
iOS IQ — что доступно уже сейчас?
Со времени создания закрытой базы знаний прошло уже более полугода, и за это время я получил множество отзывов. Многие из них о полезности контента и о структуре, которой нет больше ни в одном канале (небольшая ремарка, для меня это основа, когда ты делаешь то, что тебе нравится).
Большинство читателей удивлены, насколько широкие вещи затрагиваются, и, конечно, приятно получать фидбэк, в котором ребята делятся, что контент помогает со многими вещами в работе.
Знаю, что некоторые используют темы для подготовки к собеседованиям с обеих сторон. Но это не главное.
Как уже неоднократно писал в канале, в первую очередь, я — разработчик, и поэтому тщательно подхожу к тому, о чём пишу, и как именно это преподносится. Мне важно рассказывать о практических анимациях и о том, что по-настоящему полезно.
Конечно, посты и из канала, и из бусти иногда появляются в других местах (приятно, что подписчики делятся этим). Часто посты разбавляют сомнительной рекламой или непонятными заявлениями.
Ни в этом канале, ни в iOS IQ, ни в приложении такого не было, нет и не будет.
Иногда меня просят отреагировать на это или публично ответить, но я считаю, что выбор, который делают эти ребята, только на их совести. Приятнее потратить доступный отрезок свободного времени на разбор фишек Xcode или разбор ещё одного шейдера.
В iOS IQ сейчас вы можете:
🧠 Если вы хотите поддержать канал и прокачаться в перечисленных выше темах, подпишитесь по специальному предложению на бусти или здесь, в телеграм - этот способ предпочтительнее.
😃 iOS Dev
Со времени создания закрытой базы знаний прошло уже более полугода, и за это время я получил множество отзывов. Многие из них о полезности контента и о структуре, которой нет больше ни в одном канале (небольшая ремарка, для меня это основа, когда ты делаешь то, что тебе нравится).
Большинство читателей удивлены, насколько широкие вещи затрагиваются, и, конечно, приятно получать фидбэк, в котором ребята делятся, что контент помогает со многими вещами в работе.
Знаю, что некоторые используют темы для подготовки к собеседованиям с обеих сторон. Но это не главное.
Как уже неоднократно писал в канале, в первую очередь, я — разработчик, и поэтому тщательно подхожу к тому, о чём пишу, и как именно это преподносится. Мне важно рассказывать о практических анимациях и о том, что по-настоящему полезно.
Конечно, посты и из канала, и из бусти иногда появляются в других местах (приятно, что подписчики делятся этим). Часто посты разбавляют сомнительной рекламой или непонятными заявлениями.
Ни в этом канале, ни в iOS IQ, ни в приложении такого не было, нет и не будет.
Иногда меня просят отреагировать на это или публично ответить, но я считаю, что выбор, который делают эти ребята, только на их совести. Приятнее потратить доступный отрезок свободного времени на разбор фишек Xcode или разбор ещё одного шейдера.
В iOS IQ сейчас вы можете:
➡️ Познакомиться с решением практических задач на самые разные темы (от поиска утечек памяти до примеров работы со SwiftData).➡️ Узнать, как работать с дебаггером (про трюки с lldb, получить советы по отладке и неообычные примеры использования брейкпоинтов).➡️ Получить базу для подготовки к собеседованиям (память, чтение кода, разборы конкретных вопросов, и конечно тематические подборки).➡️ Разбор архитектурных шаблонов на реальных примерах. За основу взяты паттерны проектирования банды четырёх.➡️ Полезные вопросы с секции system design.➡️ Разбор техник для решения алгоритмов. И мой собственный набор решённых задач от яндекса.
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой у вас опыт разработки (не только iOS, а в целом)?
Anonymous Poll
6%
Менее полугода
6%
Около года
8%
От года до двух лет
29%
2-4 года
19%
4-7 лет
11%
7-10 лет
14%
> 10 лет
8%
Посмотреть ответы
Подборка докладов с конференции Swift Craft
Swift Craft — конференция в Великобритании, которая прошла в мае, а сейчас на канале появились видео, с которыми можно ознакомиться.
📺 Управление состояниями для iOS-приложений
Аракс Авоян рассказывает о функциональном управлении состояниями в приложениях для iOS. В докладе уделено внимание основам функционального программирования (и приведены практические примеры).
📺 Назад в будущее - Swift 6 Edition!
Пол Пиелла Абадия подготовил этот доклад, в котором объясняет все предстоящие изменения, а также использует несколько примеров кода, чтобы лучше подготовиться к Swift 6 уже сейчас.
📺 Математик размышляет о макросах, @Models и ML
Дэниел Стейнберг делится своими размышлениями, в частности, как мы решаем, чему учиться и как изучать новые вещи, анонсируемые каждый год на WWDC.
📺 Дата и время в Swift — обработка даты в программировании на Swift (будет доступно 21 августа).
В этом докладе будет рассказано о взаимодействии Date с датами, календарями, форматорами, компонентами DateComponents, TimeZones и другими полезными вещами.
📖 Все доклады конференции доступны в этом плейлисте.
😃 iOS Dev
Swift Craft — конференция в Великобритании, которая прошла в мае, а сейчас на канале появились видео, с которыми можно ознакомиться.
📺 Управление состояниями для iOS-приложений
Аракс Авоян рассказывает о функциональном управлении состояниями в приложениях для iOS. В докладе уделено внимание основам функционального программирования (и приведены практические примеры).
📺 Назад в будущее - Swift 6 Edition!
Пол Пиелла Абадия подготовил этот доклад, в котором объясняет все предстоящие изменения, а также использует несколько примеров кода, чтобы лучше подготовиться к Swift 6 уже сейчас.
📺 Математик размышляет о макросах, @Models и ML
Дэниел Стейнберг делится своими размышлениями, в частности, как мы решаем, чему учиться и как изучать новые вещи, анонсируемые каждый год на WWDC.
📺 Дата и время в Swift — обработка даты в программировании на Swift (будет доступно 21 августа).
В этом докладе будет рассказано о взаимодействии Date с датами, календарями, форматорами, компонентами DateComponents, TimeZones и другими полезными вещами.
📖 Все доклады конференции доступны в этом плейлисте.
Please open Telegram to view this post
VIEW IN TELEGRAM
Прошло уже 9 лет с момента анонса SPM (именно тогда начал замедляться рост CocoaPods). Несмотря на это, CocoaPods продолжали оставаться сверхпопулярными и востребованными среди разработчиков.
ℹ️ Orta Therox написал большой пост, в частности, затрагивающий и проблемы с безопасностью, а также выпустил важный анонс, в котором сообщил о будущих планах по поддержке и обслуживанию.
Теперь будет как минимум два релиза в год для поддержки изменений Xcode, будут закрывать все возможные проблемы с безопасностью и уделять внимание тем PR, которые ориентированы на будущее.
Вместе с этим, больше не будет активного реагирования на проблемы индивидуальных пользователей, и будет свернуто активное развитие проекта. Кроме этого, они не могут дать гарантий, что будут рассмотрены пулреквесты, направленные только на новые фичи.
Please open Telegram to view this post
VIEW IN TELEGRAM
36🫡25 15🔥8👍7🤯5💯2❤🔥1🎉1
This media is not supported in your browser
VIEW IN TELEGRAM
Warp-эффект на metal-шейдере
Возможности использования шейдеров в iOS-разработке довольно велики, но применение именно в прод-разработке не так обширно на данный момент (если речь не идёт о работе с видео или фото).
Ранее я писал о том, что добавил новый раздел в iOS IQ, в котором разбираю некоторые необычные вещи, эффекты и варианты реализации с помощью возможностей системных фреймворков.
🤩 Один из таких эффектов — Warp, реализацию которого без Metal я уже применял в приложении.
🔗 Доступ, примеры и рабочий код уже доступны для всех подписчиков здесь и в бусти.
😃 iOS Dev
Возможности использования шейдеров в iOS-разработке довольно велики, но применение именно в прод-разработке не так обширно на данный момент (если речь не идёт о работе с видео или фото).
Ранее я писал о том, что добавил новый раздел в iOS IQ, в котором разбираю некоторые необычные вещи, эффекты и варианты реализации с помощью возможностей системных фреймворков.
🔗 Доступ, примеры и рабочий код уже доступны для всех подписчиков здесь и в бусти.
Please open Telegram to view this post
VIEW IN TELEGRAM
5 16🔥9🤩6💯4👍3❤🔥1⚡1🏆1
❗️Apple Search Ads заблокировал все рекламные инструменты и кампании для разработчиков из РФ и Беларуси
Сегодня все разработчики получили письмо о том, что им больше недоступны эти инструменты от Apple.
Я тоже получил такое письмо утром, Apple ссылается на пункт 13, но по факту причина только одна: страна регистрации аккаунта.
Боюсь предположить, что будет дальше и поменяется ли политика по выплате дохода.
😃 iOS Dev — вот такое утро
Сегодня все разработчики получили письмо о том, что им больше недоступны эти инструменты от Apple.
Я тоже получил такое письмо утром, Apple ссылается на пункт 13, но по факту причина только одна: страна регистрации аккаунта.
Боюсь предположить, что будет дальше и поменяется ли политика по выплате дохода.
Please open Telegram to view this post
VIEW IN TELEGRAM
45🤯41👍16🫡14🔥7⚡4❤🔥3✍3🙏3🎄1🆒1
iOS Dev
❗️Apple Search Ads заблокировал все рекламные инструменты и кампании для разработчиков из РФ и Беларуси Сегодня все разработчики получили письмо о том, что им больше недоступны эти инструменты от Apple. Я тоже получил такое письмо утром, Apple ссылается…
Как вы считаете, будут ли заблокированы учетки Apple Developer для разработчиков из РФ и Беларуси?
Anonymous Poll
37%
Да
63%
Нет
20🤯21🔥7🙏4✍3🫡3⚡2💯2☃1🏆1🎅1🆒1
Как повысить видимость приложения на устройстве
Читатель нашего канала прислал любопытный способ, как можно с помощью одной строки помочь пользователям проще найти ваше приложение на iOS.
Для этого стоит воспользоваться ключом
На скриншоте пример для приложения iOS IQ (попробовал замаскироваться под твиттер, чтобы заменить его более полезным контентом), обновление которого уже скоро будет доступно подписчикам.
📖 Целиком статья доступна здесь, можно посмотреть на примеры и добавить несколько👏 .
😃 iOS Dev — а вот тут я писал про способ использования для NSUserActivity
Читатель нашего канала прислал любопытный способ, как можно с помощью одной строки помочь пользователям проще найти ваше приложение на iOS.
Для этого стоит воспользоваться ключом
kMDItemKeywords
, который не описан в документации (да и вообще там якобы только macOS) и использовать нужные вам теги.На скриншоте пример для приложения iOS IQ (попробовал замаскироваться под твиттер, чтобы заменить его более полезным контентом), обновление которого уже скоро будет доступно подписчикам.
📖 Целиком статья доступна здесь, можно посмотреть на примеры и добавить несколько
Please open Telegram to view this post
VIEW IN TELEGRAM
16 32👍18💯7❤🔥4🎄4🆒2 2✍1⚡1🎉1🎅1
Скрытые возможности крашлогов: как читать информацию об ошибках
Никто не любит краши. Бывает, что их сложно анализировать, а исследование причин может отнять большое количество времени (и возможно, даже не всегда привести нас к решению).
Патрик Уордл проделал огромную работу и написал статью, в которой объяснил, как упростить понимание структуры и информации из крашлогов.
Он признаёт, что сам путь исследования требует глубокого понимания реверс-инжиниринга, поэтому поверхностно ещё и затронуты темы дизассемблирования и отладки на примере ARM64.
Сам материал наполнен большим количеством примеров не только под iOS, но и macOS, и, даже показан баг 0day (который затрагивает даже бетки 15 макоси).
📖 Рекомендую прочитать и сохранить исследование.
А если вы хотите узнать, что, например, означает EXC_BAD_ACCESS — у нас в канале уже есть и такой пост.
✅ Кстати, что в ноушне есть раздел по повышению производительности приложения, информация из которого поможет уменьшить причины появления самых разных крашей.
😃 iOS Dev
Никто не любит краши. Бывает, что их сложно анализировать, а исследование причин может отнять большое количество времени (и возможно, даже не всегда привести нас к решению).
Патрик Уордл проделал огромную работу и написал статью, в которой объяснил, как упростить понимание структуры и информации из крашлогов.
Он признаёт, что сам путь исследования требует глубокого понимания реверс-инжиниринга, поэтому поверхностно ещё и затронуты темы дизассемблирования и отладки на примере ARM64.
Сам материал наполнен большим количеством примеров не только под iOS, но и macOS, и, даже показан баг 0day (который затрагивает даже бетки 15 макоси).
📖 Рекомендую прочитать и сохранить исследование.
А если вы хотите узнать, что, например, означает EXC_BAD_ACCESS — у нас в канале уже есть и такой пост.
Please open Telegram to view this post
VIEW IN TELEGRAM
8 14✍7🔥6💯2☃1👍1👏1🏆1🎄1😎1
Зарплаты стажёров и джунов в IT
На Хабр.карьере вышло новое исследование зарплат, на этот раз изучили зарплатные возможности для новичков в IT — стажеров и джунов.
Главные выводы:
1️⃣ Проще попасть в IT с позиции стажера.
2️⃣ Доля вакансий с удаленкой для джунов и стажеров сейчас 60%, это на 17% больше, чем в начале 2023.
3️⃣ Больше всего начинающие IT-специалисты зарабатывают в Ozon Tech, YADRO и Холдинге Т1.
💸 Эти данные основаны на реальных зарплатах, а больше про динамику на рынке можно узнать в этом посте.
😃 iOS Dev
На Хабр.карьере вышло новое исследование зарплат, на этот раз изучили зарплатные возможности для новичков в IT — стажеров и джунов.
Главные выводы:
1️⃣ Проще попасть в IT с позиции стажера.
2️⃣ Доля вакансий с удаленкой для джунов и стажеров сейчас 60%, это на 17% больше, чем в начале 2023.
3️⃣ Больше всего начинающие IT-специалисты зарабатывают в Ozon Tech, YADRO и Холдинге Т1.
Please open Telegram to view this post
VIEW IN TELEGRAM
6 24✍7⚡4☃1👍1🔥1🎉1👌1💯1🆒1 1
Инструментарий. Полезные советы при работе с Xcode, терминалом и симулятором
В новом разделе в Notion я добавил некоторые неочевидные советы при работе с Xcode, которые упростят и ускорят разработку (в том числе и полезные возможности при работе с симулятором от тестирования пушей и диплинков до навигации и советов при билдах).
Уже сейчас в базе знаний доступно несколько важных составляющих:
И многое другое. По мере появления свободного времени я делюсь своим опытом и стараюсь рассказать о некоторых сложных вещах.
Вы можете подписаться здесь или в телеграм-боте ( ❤️).
😃 iOS Dev
В новом разделе в Notion я добавил некоторые неочевидные советы при работе с Xcode, которые упростят и ускорят разработку (в том числе и полезные возможности при работе с симулятором от тестирования пушей и диплинков до навигации и советов при билдах).
Уже сейчас в базе знаний доступно несколько важных составляющих:
Подготовка к собеседованиям:
- Мок-собесы с публичным доступом (сейчас несколько десятков на русском и английском языках).
- Вопросы для подготовки по секциям (сотни вопросов на разные темы)
- Частные узкие темы (с поиском проблем в коде).
- System Design. Мои советы и большая подборка материалов.
Алгоритмы:
- Сложность алгоритмов.
- Разбор десятков задач с контестов (в том числе и от яндекса).
- Популярные методы решения задач (с примерами).
Архитектуры:
- Все паттерны проектирования банды четырёх. Общая информация и примеры реализации на Swift.
- Архитектурные заблуждения.
- Реализация в реальных приложениях.Красим кнопкиНеобычные эффекты:
В этом разделе я делюсь анимациями, подходами к созданию и десятками примеров.
Ранний доступ к обновлениям приложения:
Статья о разработке доступна в публичном доступе.
И многое другое. По мере появления свободного времени я делюсь своим опытом и стараюсь рассказать о некоторых сложных вещах.
Вы можете подписаться здесь или в телеграм-боте ( ❤️).
Please open Telegram to view this post
VIEW IN TELEGRAM
43 17🔥6👍5❤🔥3⚡1☃1🤩1💯1🎄1🆒1
Отслеживание утечек памяти в iOS-приложении со SwiftUI в Runtime
Декларативность, а также то, что в SwiftUI нет явно выраженного жизненного цикла для вьюх, значительно повышает трудности при поиске утечек по сравнению с UIKit.
📖 На хабре iOS-разработчик Фарид поделился своим решением в компании для упрощения поиска проблем утечек в таких проектах.
Основные блоки:
1️⃣ Рассмотрены основные подходы для поиска утечек.
2️⃣ Поиск оптимального варианта для нахождения таких проблем.
3️⃣ Поиск опций для подстраховки от утечек в будущем.
😃 iOS Dev
Декларативность, а также то, что в SwiftUI нет явно выраженного жизненного цикла для вьюх, значительно повышает трудности при поиске утечек по сравнению с UIKit.
📖 На хабре iOS-разработчик Фарид поделился своим решением в компании для упрощения поиска проблем утечек в таких проектах.
Основные блоки:
1️⃣ Рассмотрены основные подходы для поиска утечек.
2️⃣ Поиск оптимального варианта для нахождения таких проблем.
3️⃣ Поиск опций для подстраховки от утечек в будущем.
Please open Telegram to view this post
VIEW IN TELEGRAM
26 21👍6🔥4⚡2 2💯1🏆1🎄1🆒1
This media is not supported in your browser
VIEW IN TELEGRAM
Как использовать файлы EditorConfig в Xcode 16
🛠 Если вы работали/работаете над несколькими проектами с разным кодстайлом, то может быть такое, что приходится настраивать параметры Xcode каждый раз при переключении между проектами.
А если в проекте нет линтера, который обеспечивает соблюдение стиля и вы вдруг забудете применить эти настройки, то в итоге можно легко получить непоследовательное форматирование кода во всем проекте.
В Xcode 16 добавлена поддержка файлов EditorConfig, которые позволяют задавать настройки редактора Xcode для каждого проекта.
📖 В этой статье вы узнаете, как настроить файлы EditorConfig в Xcode и какие настройки поддерживаются на данный момент.
✅ Больше советов по работе с инструментарием вы можете найти здесь.
😃 iOS Dev
🛠 Если вы работали/работаете над несколькими проектами с разным кодстайлом, то может быть такое, что приходится настраивать параметры Xcode каждый раз при переключении между проектами.
А если в проекте нет линтера, который обеспечивает соблюдение стиля и вы вдруг забудете применить эти настройки, то в итоге можно легко получить непоследовательное форматирование кода во всем проекте.
В Xcode 16 добавлена поддержка файлов EditorConfig, которые позволяют задавать настройки редактора Xcode для каждого проекта.
📖 В этой статье вы узнаете, как настроить файлы EditorConfig в Xcode и какие настройки поддерживаются на данный момент.
Please open Telegram to view this post
VIEW IN TELEGRAM
25 21👍8💯3✍2❤🔥1🔥1🎉1🤩1🎅1🆒1 1
Получение флага страны в виде эмодзи в Swift
Часто требуется отобразить эмодзи для страны по её коду.
Флаги Emoji представлены с помощью последовательностей символов в unicode. Удивительно, но юникодовое представление каждого флага напрямую соотносится с кодом по стандарту ISO (ISO 3166-1 alpha-2).
Конечно, есть соблазн использовать что-то вроде:
Но есть и другой путь.
📖 В этом материале разбираются не только принципы получения эмодзи, но и затронуты неочевидные моменты для разных стандартов.
😃 iOS Dev
Часто требуется отобразить эмодзи для страны по её коду.
Флаги Emoji представлены с помощью последовательностей символов в unicode. Удивительно, но юникодовое представление каждого флага напрямую соотносится с кодом по стандарту ISO (ISO 3166-1 alpha-2).
Конечно, есть соблазн использовать что-то вроде:
let flags: [String: String] = ["AD": "🇦🇩", "AE": "🇦🇪", "AF": "🇦🇫", "AG": "🇦🇬", "AI": "🇦🇮", "AL": "🇦🇱", "AM": "🇦🇲", "AO": "🇦🇴", "AQ": "🇦🇶", "AR": "🇦🇷", "AS": "🇦🇸", "AT": "🇦🇹", "AU": "🇦🇺", "AW": "🇦🇼", "AX": "🇦🇽", "AZ": "🇦🇿", "BA": "🇧🇦", "BB": "🇧🇧", "BD": "🇧🇩", "BE": "🇧🇪", "BF": "🇧🇫", "BG": "🇧🇬", "BH": "🇧🇭", "BI": "🇧🇮", "BJ": "🇧🇯", "BL": "🇧🇱", "BM": "🇧🇲", "BN": "🇧🇳", "BO": "🇧🇴", "BQ": "🇧🇶", "BR": "🇧🇷", "BS": "🇧🇸", "BT": "🇧🇹", "BV": "🇧🇻", "BW": "🇧🇼", "BY": "🇧🇾", "BZ": "🇧🇿", "CA": "🇨🇦", "CC": "🇨🇨", "CD": "🇨🇩", "CF": "🇨🇫", "CG": "🇨🇬", "CH": "🇨🇭", "CI": "🇨🇮", "CK": "🇨🇰", "CL": "🇨🇱", "CM": "🇨🇲", "CN": "🇨🇳", "CO": "🇨🇴", "CR": "🇨🇷", "CU": "🇨🇺", "CV": "🇨🇻", "CW": "🇨🇼", "CX": "🇨🇽", "CY": "🇨🇾", "CZ": "🇨🇿", "DE": "🇩🇪", "DJ": "🇩🇯", "DK": "🇩🇰", "DM": "🇩🇲", "DO": "🇩🇴", "DZ": "🇩🇿", "EC": "🇪🇨", "EE": "🇪🇪", "EG": "🇪🇬", "EH": "🇪🇭", "ER": "🇪🇷", "ES": "🇪🇸", "ET": "🇪🇹", "FI": "🇫🇮", "FJ": "🇫🇯", "FK": "🇫🇰", "FM": "🇫🇲", "FO": "🇫🇴", "FR": "🇫🇷", "GA": "🇬🇦", "GB": "🇬🇧", "GD": "🇬🇩", "GE": "🇬🇪", "GF": "🇬🇫", "GG": "🇬🇬", "GH": "🇬🇭", "GI": "🇬🇮", "GL": "🇬🇱", "GM": "🇬🇲", "GN": "🇬🇳", "GP": "🇬🇵", "GQ": "🇬🇶", "GR": "🇬🇷", "GS": "🇬🇸", "GT": "🇬🇹", "GU": "🇬🇺", "GW": "🇬🇼", "GY": "🇬🇾", "HK": "🇭🇰", "HM": "🇭🇲", "HN": "🇭🇳", "HR": "🇭🇷", "HT": "🇭🇹", "HU": "🇭🇺", "ID": "🇮🇩", "IE": "🇮🇪", "IL": "🇮🇱", "IM": "🇮🇲", "IN": "🇮🇳", "IO": "🇮🇴", "IQ": "🇮🇶", "IR": "🇮🇷", "IS": "🇮🇸", "IT": "🇮🇹", "JE": "🇯🇪", "JM": "🇯🇲", "JO": "🇯🇴", "JP": "🇯🇵", "KE": "🇰🇪", "KG": "🇰🇬", "KH": "🇰🇭", "KI": "🇰🇮", "KM": "🇰🇲", "KN": "🇰🇳", "KP": "🇰🇵", "KR": "🇰🇷", "KW": "🇰🇼", "KY": "🇰🇾", "KZ": "🇰🇿", "LA": "🇱🇦", "LB": "🇱🇧", "LC": "🇱🇨", "LI": "🇱🇮", "LK": "🇱🇰", "LR": "🇱🇷", "LS": "🇱🇸", "LT": "🇱🇹", "LU": "🇱🇺", "LV": "🇱🇻", "LY": "🇱🇾", "MA": "🇲🇦", "MC": "🇲🇨", "MD": "🇲🇩", "ME": "🇲🇪", "MF": "🇲🇫", "MG": "🇲🇬", "MH": "🇲🇭", "MK": "🇲🇰", "ML": "🇲🇱", "MM": "🇲🇲", "MN": "🇲🇳", "MO": "🇲🇴", "MP": "🇲🇵", "MQ": "🇲🇶", "MR": "🇲🇷", "MS": "🇲🇸", "MT": "🇲🇹", "MU": "🇲🇺", "MV": "🇲🇻", "MW": "🇲🇼", "MX": "🇲🇽", "MY": "🇲🇾", "MZ": "🇲🇿", "NA": "🇳🇦", "NC": "🇳🇨", "NE": "🇳🇪", "NF": "🇳🇫", "NG": "🇳🇬", "NI": "🇳🇮", "NL": "🇳🇱", "NO": "🇳🇴", "NP": "🇳🇵", "NR": "🇳🇷", "NU": "🇳🇺", "NZ": "🇳🇿", "OM": "🇴🇲", "PA": "🇵🇦", "PE": "🇵🇪", "PF": "🇵🇫", "PG": "🇵🇬", "PH": "🇵🇭", "PK": "🇵🇰", "PL": "🇵🇱", "PM": "🇵🇲", "PN": "🇵🇳", "PR": "🇵🇷", "PS": "🇵🇸", "PT": "🇵🇹", "PW": "🇵🇼", "PY": "🇵🇾", "QA": "🇶🇦", "RE": "🇷🇪", "RO": "🇷🇴", "RS": "🇷🇸", "RU": "🇷🇺", "RW": "🇷🇼", "SA": "🇸🇦", "SB": "🇸🇧", "SC": "🇸🇨", "SD": "🇸🇩", "SE": "🇸🇪", "SG": "🇸🇬", "SH": "🇸🇭", "SI": "🇸🇮", "SJ": "🇸🇯", "SK": "🇸🇰", "SL": "🇸🇱", "SM": "🇸🇲", "SN": "🇸🇳", "SO": "🇸🇴", "SR": "🇸🇷", "SS": "🇸🇸", "ST": "🇸🇹", "SV": "🇸🇻", "SX": "🇸🇽", "SY": "🇸🇾", "SZ": "🇸🇿", "TC": "🇹🇨", "TD": "🇹🇩", "TF": "🇹🇫", "TG": "🇹🇬", "TH": "🇹🇭", "TJ": "🇹🇯", "TK": "🇹🇰", "TL": "🇹🇱", "TM": "🇹🇲", "TN": "🇹🇳", "TO": "🇹🇴", "TR": "🇹🇷", "TT": "🇹🇹", "TV": "🇹🇻", "TW": "🇹🇼", "TZ": "🇹🇿", "UA": "🇺🇦", "UG": "🇺🇬", "UM": "🇺🇲", "US": "🇺🇸", "UY": "🇺🇾", "UZ": "🇺🇿", "VA": "🇻🇦", "VC": "🇻🇨", "VE": "🇻🇪", "VG": "🇻🇬", "VI": "🇻🇮", "VN": "🇻🇳", "VU": "🇻🇺", "WF": "🇼🇫", "WS": "🇼🇸", "YE": "🇾🇪", "YT": "🇾🇹", "ZA": "🇿🇦", "ZM": "🇿🇲", "ZW": "🇿🇼"]
Но есть и другой путь.
📖 В этом материале разбираются не только принципы получения эмодзи, но и затронуты неочевидные моменты для разных стандартов.
Please open Telegram to view this post
VIEW IN TELEGRAM
7 27👍9✍6💯2⚡1❤🔥1🔥1🏆1🎅1🎄1
SwiftUI AlignmentGuide: расширенное руководство
📖 На хабре опубликована большая статья с примерами для работы с модификатором AlignmentGuide, описано, когда могут пригодиться ViewDimensions и какие есть альтернативы.
🛠А ещё есть интерактивный сайт, где можно посмотреть не только на самые разные примеры верстки, но и поперетаскивать блоки.
😃 iOS Dev
📖 На хабре опубликована большая статья с примерами для работы с модификатором AlignmentGuide, описано, когда могут пригодиться ViewDimensions и какие есть альтернативы.
🛠А ещё есть интерактивный сайт, где можно посмотреть не только на самые разные примеры верстки, но и поперетаскивать блоки.
Please open Telegram to view this post
VIEW IN TELEGRAM
12 19👍7🔥3✍2⚡2👌2💯2☃1🎅1🎄1
DebugDescription в Xcode 16: новый макрос для упрощения отладки
При работе с кастомными типами отладка может быть непростой задачей.
Для упрощения можно юзать
А с помощью макроса DebugDescription, можно вызвать debugDescription и чекнуть детальное описание.
😃 iOS Dev
При работе с кастомными типами отладка может быть непростой задачей.
Для упрощения можно юзать
CustomDebugStringConvertible
, который позволяет кастомизировать вывод в таких случаях.А с помощью макроса DebugDescription, можно вызвать debugDescription и чекнуть детальное описание.
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍16 14👏5🎄2✍1❤🔥1⚡1🔥1🎉1💯1
Работа с данными банковских приложений на iOS с использованием SwiftUI + Vision
Одна из перспективных задач при работе с любыми приложениями — упрощение ввода, так как это экономия времени, сил и способ избежать потенциальных ошибок.
Но у того же FinanceKit есть множество ограничений: минимальная ось 17.4 и требования к самим компаниям, да и пользователи вряд ли захотят делиться своими данными.
🧑💻 Наш читатель, Слава Слуцкер, придумал необычный и интересный способ для решения задачи сбора данных о кэшбеке из разных источников на базе скриншотов (но, конечно, потенциал использования выше).
Для этого он использовал связку Vision (для распознавания определённых строк и дальнейшего парсинга процентов) и SwiftUI. Vision умеет работать в том числе и с разными языками, что безусловный плюс, а ещё прямо на устройстве.
📖 В статье на хабре вы можете почитать о процессе решения этой задачи, познакомиться с кодом и, возможно, использовать это в своих приложениях. Кстати, посмотреть результат (и поделиться фидбэком) можно в тестфлайте.
😃 iOS Dev
Одна из перспективных задач при работе с любыми приложениями — упрощение ввода, так как это экономия времени, сил и способ избежать потенциальных ошибок.
Но у того же FinanceKit есть множество ограничений: минимальная ось 17.4 и требования к самим компаниям, да и пользователи вряд ли захотят делиться своими данными.
🧑💻 Наш читатель, Слава Слуцкер, придумал необычный и интересный способ для решения задачи сбора данных о кэшбеке из разных источников на базе скриншотов (но, конечно, потенциал использования выше).
Для этого он использовал связку Vision (для распознавания определённых строк и дальнейшего парсинга процентов) и SwiftUI. Vision умеет работать в том числе и с разными языками, что безусловный плюс, а ещё прямо на устройстве.
📖 В статье на хабре вы можете почитать о процессе решения этой задачи, познакомиться с кодом и, возможно, использовать это в своих приложениях. Кстати, посмотреть результат (и поделиться фидбэком) можно в тестфлайте.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14 9💯3✍2🔥1👏1🎉1🤩1🏆1
Как автоматически локализовать секцию «Что нового?» с помощью App Store connect API
При создании новой версии приложения в App Store Connect мы обязаны указывать какую-то инфу, которая меняется нечасто (конечно, если у вас нет SMM-команды, которая отвечает за юмор и репосты скриншотов).
Раньше для этого повсеместно использовали fastlane, но сейчас всё чаще я слышу от коллег о переходе на нативное апи (некоторые пишут свою обёртку, некоторые используют готовые решения).
Эти способы позволяют сэкономить немного времени, усилий и устранить человеческие ошибки.
📖 В этой статье рассказано, как использовать API App Store Connect для предварительного указания информации при создании новой версии приложения.
🔗 А вот здесь описаны и другие кейсы использования этого API.
😃 iOS Dev
При создании новой версии приложения в App Store Connect мы обязаны указывать какую-то инфу, которая меняется нечасто (конечно, если у вас нет SMM-команды, которая отвечает за юмор и репосты скриншотов).
Раньше для этого повсеместно использовали fastlane, но сейчас всё чаще я слышу от коллег о переходе на нативное апи (некоторые пишут свою обёртку, некоторые используют готовые решения).
Эти способы позволяют сэкономить немного времени, усилий и устранить человеческие ошибки.
📖 В этой статье рассказано, как использовать API App Store Connect для предварительного указания информации при создании новой версии приложения.
🔗 А вот здесь описаны и другие кейсы использования этого API.
Please open Telegram to view this post
VIEW IN TELEGRAM
2 16👍5💯4✍2❤🔥1☃1⚡1🔥1👏1🎅1