Telegram Web Link
String Catalogs в Xcode 15: новый инструмент для локализации

Раньше, если вы хотели локализовать свое приложение, вам приходилось самостоятельно поддерживать файлы strings.

Было много ручной работы, которая могла привести к проблемам, поскольку все контролировать не так просто.

Apple упростила для разработчиков локализацию наших приложений, добавив каталоги строк (string catalogs).

Каталог строк автоматически отслеживает все локализуемые строки из вашего кода и хранит переводы в одном месте.

📺 Видео с WWDC, объясняющее то, как работают каталоги строк.

📖 Официальная документация Apple.

📖 Пример интеграции в реальный проект.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Превью документации в Xcode 15

🤩 Теперь c помощью Assistant можно включить превью документации в режиме реального времени.

Полезная фича для любого проекта (особенного на сотни тысяч строк кода).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
🏆 Coderun завершён [бонусный уровень]

Для того, чтобы распределить лучших участников контеста, вчера добавили новые задачи. Пока я опомнился и увидел новую партию, уже было поздно, но буду объективен, за топ-3 было бы тяжело бороться, уровень участников слишком высокий.

Несмотря на это, после прохождения основной части сезона, было бы не совсем правильно опускать руки. Поэтому я и сделал финишный рывок.

Мои впечатления от сезона

Было сложно, особенно в начале, выход из зоны комфорта и так далее. Говорят, что в бэкэнде задачи гораздо тяжелее, но всё относительно, и наша с вами работа в другом векторе программирования.
Не все кнопки просто покрасить и не все анимации даются с первого раза. Где-то в середине сезона я решал задачи даже ночью, хотя можно было бы просто отложить всё это и остановиться.

Из плюсов соревнования: некоторые модераторы в чате соревнования отвечают буквально круглосуточно (откуда они только берут силы на это), ведь переключение фокуса между разными треками задача та ещё.

И пусть это только первый сезон, а некоторые огрехи решались уже в процессе (какие-то тесты или условия), но они минорные и я понимаю, насколько сложно запустить подобный проект.

Из пожеланий (знаю, что меня читают сотрудники Яндекса): прикрутите, пожалуйста, оповещения, и в следующем сезоне для финальной части заранее определите время выкладки дополнительных задач.

🤩 Кстати, в некоторых треках участвовало больше двух тысяч человек, что несомненно успех для мероприятия.

А вы всё ещё можете побороться за топ-50 в мобильной разработке:

🔗 Попробовать свои силы можно здесь.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
visionOS 1 beta доступен! Выпустили Xcode 15 beta 2

Как пишет Apple, все начинается со строительных блоков пространственных вычислений в visionOS.

Дефолтно приложения запускаются в Shared Space, где они существуют рядом — так же, как несколько приложений на рабочем столе Mac.

Внутри Full Space можно создавать 3D-контент, открывать портал в другой мир или даже реализовывать иммерсивное погружение.

🛠 Скачать бету Xcode можно с официального сайта.

📖 Путешествие в дивный новый мир можно начать с описания возможностей.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
iOS Dev
visionOS 1 beta доступен! Выпустили Xcode 15 beta 2 Как пишет Apple, все начинается со строительных блоков пространственных вычислений в visionOS. Дефолтно приложения запускаются в Shared Space, где они существуют рядом — так же, как несколько приложений…
Накатил бетку, увидел ещё одно подтверждение того, что название visionOS появилось буквально в последний момент (видимо всё было настолько быстро перед релизом, что оно до сих пор осталось).

🤩 Доказательства этого есть при установки симулятора (на скриншоте).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩 Все изменения в Swift 5.9. В if и switch теперь можно не использовать return (но не только)!

Поскольку и if, и switch теперь могут использоваться как выражения, мы можем написать функцию как на скриншоте выше, без использования return! А все благодаря принятому предложению.

И хотя Swift 6 маячит на горизонте, выпуски 5.x всё также упрощают синтаксис. Не только if и switch, но и макросы, а также многое другое делают релиз 5.9 более впечатляющим.

📖 В этом обзоре Пол Хадсон расказывает о наиболее значимых изменениях, представляя примеры кода и пояснения (что более важно).

Для тестирования вам понадобится актуальный тулчейн Swift 5.9, доступный в Xcode 14, или бета-версия Xcode 15.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Работа со словарями в Swift: базовые понятия и примеры

Я знаю, что в нашем канале довольно много новичков, поэтому периодически рассказываю не только о каких-то сложных вещах, но также считаю не лишним напомнить об основах.

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

📖 Здесь представлены основные понятия, а также примеры работы со словарями, в частности:

1️⃣ Что такое словарь в Swift?

2️⃣ Как создать словарь с содержимым или пустой словарь.

3️⃣ Доступ к содержимому словаря с помощью subscripts.

4️⃣ Добавление, удаление и обновление элементов словаря.

5️⃣ Итерация по словарю с использованием цикла for.

Кстати, раньше я делился о том, как можно преобразовывать коллекции в Swift, если вы новичок, вам может быть это интересно 🧑‍💻.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Макросы в Swift: для чего нужны, как создавать и где посмотреть примеры

🐣 Нововведение в Swift позволяет расширить возможности компилятора с помощью кастомных проверок. Их можно использовать для анализа вашего кода и выдачи более детальных ошибок или же для удаления бойлерплейт-кода.

Например, можно чекать валидность URL во время компиляции:

let checkedURL = #URL("https://www.tg-me.com/iOS_Career")

С помощью хэштега мы вызываем наш макрос, а под капотом, например, может быть проверка на существование такого URL в целом.

Сейчас кажется, что вместо них вполне можно использовать расширения, но возможность опенсорсной выкладки и интеграции в проекты это несомненный плюс.

📖 Вот тут есть пример создания несложного макроса по шагам.

🛠 А в этом репозитории представлен пополняемый список опенсорсных макросов.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Xcode позволит разработчикам создавать приложения автоматически?

Казалось бы, что может быть круче анонсированной visionOS, но обо всём по порядку.

27 июня 2023 года в Apple подали патент, в котором, в частности, есть следующие моменты:

1️⃣ Генератор кода будет создавать подпрограмму, которая облегчит доступ ... поддерживаемый конкретным языком программирования (не только Swift).

2️⃣ Разработчик cможет затем воспользоваться автокомплитом, обнаружением ошибок имени или типа т.д., - продолжает Apple.

3️⃣ Код, как говорится в патенте, будет совместим с конкретным языком программирования, используемым в проекте.

Понимаете, к чему я веду?

Пока в компании запрещают пользоваться ChatGPT, а остальные упрекают Apple в том, что она не делает ничего, чтобы соревноваться с Google, OpenAI или продуктом Microsoft, на самом деле в Apple уже делают аналог ChatGPT.

Ускорение написания кода позволит Xcode выполнять большую часть работы, которая нужна начинающим или менее опытным разработчикам. А если читать между строк — то выполнять работу вместо них.

Предыдущие патенты по схожей тематике датируются 2016 годом (источник), и это означает, что Apple делает свою ChatGPT как минимум 7 лет.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Создание сложных интерфейсов в SwiftUI: вертикальный список с возможностью горизонтальной прокрутки

Пожалуй, одна из непростых, но в то же время часто встречающихся задач — реализация такого отображения.

📖 В этом обучающем материале от Applе вы сможете внимательнее изучить один из возможных подходов и посмотреть, как такой интерфейс может адаптироваться к различным размерам и ориентациям устройств.

🛠 А по этой ссылке доступны оба проекта (стартовый и финальный).

🧑‍💻 К слову, вот тут в нашем канале есть пост о том, как можно реализовать двунаправленную UICollectionView (тоже с примерами).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Серии вопросов и ответов, связанных с SwiftData и CoreData

Keith Harrison (автор сайта useyourloaf) задавал вопросы на QA-сессии в Slack напрямую инженерам Apple, после чего поделился кратким изложением информации, которую узнал.

И пусть SwiftData пока только анонсирована, уже есть важные моменты, на которые стоит обратить внимание:

🔘 Асинхронные операции.

🔘 Синхронизация CloudKit.

🔘 Вопросы, посвященные миграции с CoreData и так далее.

📖 Про SwiftData можно прочесть здесь, а про CoreData материал доступен вот тут.

🧑‍💻 Кстати, напоминаю, что у нас есть пополняемый список обновлений с WWDC23.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Объединяемые библиотеки (mergeable libraries) в Xcode 15: лучшее от динамических и статических либ

До введения объединяемых библиотек в WWDC этого года мы должны были решить, каким должен быть фреймворк — статическим или динамическим.

Выбор мог повлиять на время сборки приложения и производительность во время запуска.

Начиная с Xcode 15, нам не нужно будет принимать такое решение.

📺 Были анонсированы объединяемые библиотеки, сочетающие в себе лучшее из динамических и статических библиотек.

📖 В этой статье можно узнать, какие проблемы они решают и как настроить проект в Xcode для использования таких библиотек.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Создание интерактивного виджета с использованием App Intents

📖 В этом несложном примере можно узнать, как создать виджет для увеличения глобального счетчика, используемого вместе с таргет-приложением.

📖 Больше про App Intents можно узнать в официальной документации (iOS 16+).

Кстати, если вам нужно использовать больше, чем один виджет, то в канале есть пост и про такую ситуацию.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Концепт приложения для visionOS в связке с Figma (обновления в реальном времени)

Ещё одна необычная идея от Alex Widua (вы только посмотрите на его прошлый прототип!).

Во время работы с visionOS он придумал такую связку: плагин фигмы общается с приложением iOS через WebSockets. Все фреймы Figma загружаются как изображения AR, которые может распознать ARKit.

Удивительно, но работает очень даже неплохо🤩.

🛠 Тут можно посмотреть на реализацию анимации сетки при обнаружении фрейма.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Зарплаты мобильных разработчиков по данным Хабр Карьера

Появились результаты нового исследования, в котором есть распределение вакансий и по квалификации.

Самые популярные разработчики мобильных приложений — мидлы и сеньоры, доли вакансий для них одинаковые — по 45,2%.

Реже ищут лидов — доля 7,1%. Для джунов вакансий меньше всего: 2,5%.

💰По цифрам, которые оставили сами разработчики, можно сделать выводы, что джуны в среднем получают 110 000 ₽, а лиды — 430 000 ₽.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Swift OpenAPI Generator: генерация кода для клиента и сервера с помощью инструмента Apple

Swift OpenAPI Generator от Apple — это плагин SwiftPM, в который можно передать OpenAPI-док и сгенерить либо клиентский код для выполнения HTTP-запросов, либо код сервера для обработки этих вызовов.

Проект ещё на стадии разработки, но, несмотря на то, что до сих пор нет даже версии 1.0, некоторые опенсорс-решения уже стопнули разработку своих репозиториев в пользу эпловского продукта.

📖 В этом материале Марко Эйдингер показывает пример использования для двух важных этапов: создания клиентской либы, а также её внедрения в приложение.

🛠 Сам репозиторий на github.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Мой опыт разработки пет-проектов

Возможно, вы читали пост, в котором я писал, что создаю приложения с 2011 года. За это время до стора добрались три десятка, из которых так или иначе до сих пор там примерно двадцать. Около половины из них на Objective-c, другая же часть на Swift, а виджеты/приложения для часов уже на SwiftUI. Ха-ха, а ещё у меня есть одно на Kotlin.

Хочу поделиться с вами своими мыслями про то, для чего это всё было (и будет).

🔘 Доведённый до конца проект это важно. На работе встречаются сложные задачи, требующие усидчивости, нескольких подходов, иногда даже пересмотра таски под другим углом.

🔘 Мои приложения — не основной источник дохода. Скорее рассматриваю их как способ узнать что-то новое, попробовать какие-то архитектуры, или, например, попытаться написать проект только c использованием фреймворка Texture.

🔘 Вопросы ревьюеров помогут вам аргументировать свою позицию и отстаивать свои решения. Хотя периодически с ними нужно будет соглашаться 😎.

🔘 Иногда что-то даже может выстрелить. Когда-то у меня был клиент для ВК, а сам ВК тогда выпилили за авторские права на музыку, и в течение нескольких дней случилось около 50 000 установок (для меня это много).

🔘 Чаще пользователи молчат, когда их всё устраивает. Но как только что-то пойдёт не так, будьте готовы получить десяток гневных отзывов (всё, как в обычной жизни). На работе ведь тоже иногда случаются сложности при обновлении, верно?

🔘 Ваши проекты — это один из лучших способов рассказать (и показать), что вы умеете. Но, конечно, далеко не единственный.

🔘 Вложенное время, силы и деньги не окупятся напрямую. Скорее всего, никогда, будьте готовы к этому. Фактически, вам может повезти занять узкую нишу либо ресурсы позволят подключить продвижение, тогда шансов будет больше.

🔘 Когда начинаю новый проект, то стараюсь фокусироваться на одной функции. Для этого можно представить, что это фича, которую вам нужно реализовать в спринте.

🔘 Я учусь. В том числе и создавать дизайн, даже участвовал в паре конкурсов скетча, но безрезультатно. Для чего? Когда вы пробуете сделать правильно и по гайдлайнам, вы сможете лучше понимать дизайнеров-коллег и их мысли, хотя это и не всегда получается.

🔘 Про аудиторию. У меня есть приложение, которое не пользуется особым успехом (про составление слов), но там есть один пользователь, который играет в него уже 5 лет, и периодически пишет отзывы. Это невероятно круто, когда ваше приложение кому-то интересно. К сравнению, нишевый знаток скачали около 40к человек за всё время, и периодически на разных турнирах я встречаю пользователей, это забавно 🙂

В целом было множество разных ситуаций, и пусть никаких ощутимых средств приложения мне так и не принесли, но сказать, что я жалею об этом, будет преувеличением.

Пробуйте. Но всегда старайтесь найти баланс между личным временем, творчеством и перфекционизмом.

😃 iOS Dev🐱 Доступ к алгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Погружаемся в Observation: введение, принципы и примеры использования

Новый фреймворк Observation создали с целью уменьшить ненужные обновления во вьюхах SwiftUI, тем самым повышая производительность приложений.

Он представляет следующие возможности:

1️⃣ Маркировка типа как observable (наблюдаемого).

2️⃣ Отслеживание изменений в экземпляре такого типа.

3️⃣ Наблюдение и использование этих изменений в другом месте, например, в пользовательском интерфейсе приложения.

Для более детального знакомства я выбрал две обширных статьи с примерами:

📖 Обзорный материал, для чего необходим этот фреймворк: как объявлять оъекты Observable, разбор решаемых проблем с производительностью и примеры.

📖 Гайд, как перенести ObservableObject в Observable.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
🥳 5 000 разработчиков в канале!

Информация — это кровь, метаболизм современного мира (Филипп К. Дик).

Вот уже больше года я активно веду этот канал. Ищу полезный контент, делюсь критическим взглядом и поднимаю важные вопросы необходимости базы, алгоритмов и их влияния на нашу с вами работу.

Фильтрация поступающей лавины новостей, нововведений и поиск ответов на сложные вопросы требуют времени.

Конечно, в 2023 году нам доступно огромное количество каналов, в которых можно черпать информацию. Крупнее, чем @iOSDev, с большими ресурсами или даже командой авторов, и это здорово!

Правда, важно не только расширять арсенал инструментов, но и смотреть на разработку в целом: не только писать код, но и вырабатывать навыки решения проблем.

Развивать технический ресурс — сложно по многим причинам (узкий контент и непростые темы, требующие погружения). И мне невероятно приятно, что вы здесь.

❤‍🔥Спасибо, что читаете этот канал.

@iOS Devа ещё я решился на небольшой подарок, и купил соответствующий юзернейм (можете посмотреть в настройках канала). Кстати, такие эффекты гифки можно сделать в Keynote 🤗
Please open Telegram to view this post
VIEW IN TELEGRAM
Масштабное руководство по использованию SwiftData

В нем рассматриваются основополагающие концепции SwiftData, архитектурный дизайн, возможности миграции и многое другое.

📖 Этот материал состоит из нескольких разделов, каждый из которых посвящен различным аспектам фреймворка SwiftData.

📖 Будет полезно дополнить этой статьёй о вопросах и ответах, связанных с SwiftData и CoreData.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
2024/10/02 16:35:13
Back to Top
HTML Embed Code: