iOS Dev
7.87K subscribers
1.23K photos
154 videos
1 file
1.54K links
👨‍💻Автор: Виктор Грушевский (@Viktorianec)

⚒️ База: https://boosty.to/ios_dev | 🤖 @iOSIQBot | https://iosiq.ru

🍏Канал об iOS-разработке, алгоритмах и архитектурах

⭐️ Подготовка к собесам

⭐️ Код. Много кода.

#ios #mobile #swift
Download Telegram
Уже совсем скоро WWDC, а ведь у Apple есть ещё и свой сервис стриминга!

Кроме посещения флагманских сторов, заглянул сегодня на The Grove, но оказалось, что там есть кое-что любопытнее стора, делюсь впечатлениями.

📺 На стендах представлены Тед Лассо, Разделение, Утреннее шоу и другие сериалы.

📸 Из крутых моментов выделю, что можно сфотографироваться рядом с реквизитом.

☕️А ещё каждый сериал балует фанатов съедобными штуками совершенно бесплатно. Просто вдумайтесь, насколько там внимательны к деталям, вот пара примеров:
— The Morning Show делится талончиком с рекламой, который можно обменять на кофе в соседнем киоске. Шоу же утреннее!

— Новый сериал Pachinko делится семенами японских цветов.

— А на стенде Теда Лассо всем желающим выдают мороженое со вкусом Эрл Грей. Ну и как тут не сказать «Вперёд, Ричмонд!»?

— Кроме этого, в Разделении есть вендинговый автомат, попробовав снеки из которого можно представить себя работником Lumon.

❤️ Как говорится, маркетинг в мелочах это верный путь к сердцам фанатов!
👍14🔥8❤4
Объяснение MVVM на примере простого приложения для iOS

Для демонстрации автор создаёт приложение для загрузки списка сортов напитков в UITableView.

MVVM — архитектура, которая обладает несложной логикой, использующей 3 различных объекта.

1️⃣ View Controller
Должен выполнять единственную операцию с нашим пользовательским интерфейсом. Он должен только получать и отображать информацию.

2️⃣ View Model
ViewController будет отправлять информацию в View Model. Она, в свою очередь, будет обрабатывать их, выполнять всю бизнес-логику и предоставлять выходные данные обратно контроллеру.

3️⃣ Model
Это простая модель, которая обычно содержит разобранные данные. Она будет использоваться только в View Model.

📖 Почитать можно тут.

🛠 А сам проект лежит здесь.
👏15👍8❤2🔥2🤯2
This media is not supported in your browser
VIEW IN TELEGRAM
It's Over 9000 1000!

😔 В канале не было постов пару дней из-за некоторых сложностей с возвращением из поездки в Купертино, но скоро всё будет в своём потоке (if you know what I mean).

❤️Этот канал я активно веду вот уже почти три месяца, и хочу сказать Спасибо каждому из вас за то, что вы читаете статьи, оцениваете и делитесь постами.

ℹ️ В нашей сфере умение фильтровать информацию, выделять факты и оставлять на выходе только самое полезное — едва ли не важнейшее в профессии.

Вот несколько чисел на данный момент:

— 263 поста с момента создания.

— 53 реакции у самого популярного.

— 10 статей на хабре.

— 3 поста о топовых сторах Apple изнутри (раз, два, три).

> 1000 крутейших читателей.

🎉Этот пост я хотел написать в свой день рождения, если получится достичь заветной цифры, собственно, вот. Хотел == сделал!


🛠Кстати, по традиции, гифка сделана не в редакторе, а с помощью Swift. Код нужно подтюнить, но вы же этого не боитесь? 😉

Ведь даже путь в тысячу ли начинается с первого шага.
❤43👍16🎉11🔥3
‼️ Apple напоминает, что приложения, поддерживающие создание учетных записей, должны позволять пользователям удалять их изнутри с 30 июня 2022 года.

⏳Этот срок был продлен.

Также нам напоминают о следующих требованиях:

— Опцию удаления учетной записи должно быть легко найти в приложении.

— Если приложение предлагает функцию Sign in with Apple, необходимо использовать REST API Sign in with Apple для отзыва пользовательских токенов.

— Недостаточно предоставить только возможность временного отключения или деактивации учетной записи. Люди должны иметь возможность удалить учетную запись вместе со своими личными данными.

— Приложения в строго регулируемых отраслях могут предоставлять дополнительные сервисы для облегчения процесса.

— Соблюдайте законодательные требования к хранению информации об учетных записях. Это включает в себя соблюдение местных законов в разных странах и регионах.

Также Apple рекомендуют проконсультироваться со своим юристом🧐.
👍22🤔3😱2❤1
Для чего нужны closures (замыкания) в Swift и как с ними работать?

📖 Замыкания - это мощная концепция, которая позволяет использовать множество различных шаблонов программирования.
Однако для многих начинающих программистов closures могут быть сложными в понимании и дальнейшем использовании.
Это особенно верно, когда замыкания используются в асинхронном контексте.

Например, когда они используются в качестве completion handlers или передаются в приложении, чтобы их можно было вызвать позже.

В своём посте автор объясняет, что такое замыкания в Swift, как они работают и, самое главное, показывает различные примеры замыканий с возрастающей сложностью.

🧐 К концу этой заметки автор обещает объяснить всё, что необходимо знать для эффективного использования замыканий в приложении.

💻 Если статья будет понятна не сразу, ничего страшного. Сlosures — это не самая простая тема, и вполне возможно, что придется детальнее посмотреть примеры, чтобы полностью усвоить материал.

@iOS Dev
👍27❤5🔥3👏1😁1
Общие сведения о сертификатах и Provisioning Profiles в iOS

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

Хороший способ для понимания — сделать шаг в сторону от разработки и понять, как работает безопасный веб-серфинг (HTTPS, SSL, TLS).

🔐 Возможно, вы слышали о симметричной криптографии - механизме, позволяющим зашифровать сообщение с помощью специального секретного ключа, а затем расшифровать его с помощью того же ключа:

Plain message + key 1 = Encrypted message
Encrypted message + key 2 = Plain message


📖 В материале от SwiftRocks можно прочесть не только об этом, а ещё, например, про:

— Что такое центры сертификации?

— Как работают сертификаты в iOS?

— Что такое provisioning profiles?

Автор в шутку предполагает, что после прочтения вы будете главным специалистом компании по вопросам сертификатов! 😎

@iOS Dev
👍12❤1👏1
Как сортировать сразу по нескольким свойствам в Swift и избежать при этом pyramid of doom 😱

Сама по себе сортировка довольно проста, если вы делаете ее по одному критерию или одному свойству. В Swift уже есть функция для этого:

let numbers = [3, 5, 6, 1, 8, 2]

let sortedNumbers = numbers.sorted { (lhs, rhs) in
return lhs < rhs
}


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

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

🧑‍💻 Вы сами сможете прокачать этот способ для требуемых задач, как только станут понятны основы.

@iOS Dev
👍20🔥4
3 способа использования enum, которые должны быть в вашем арсенале

💪 Перечисление (enum) - это очень мощный тип в Swift. Каждый из нас использует его практически в каждом проекте.

Сегодня я хотел бы поделиться некоторыми приемами работы с перечислениями в Swift, о которых могут знать не все.

🧐 Если у вас солидный бэкграунд, то вы будете в курсе, но освежить знания не помешает.

В публикации рассматривается три блока:

1️⃣ Сложные случаи с привязкой значений.

2️⃣ Если нас интересуют конкретный кейс перечисления, то можно использовать if let и guard let.

3️⃣ Если связанное значение optional, то также можно использовать соответствующий шаблон. Это будет более понятно на конкретных примерах из статьи.

@iOS Dev
👍12🔥3❤2🤔2
Конфигурация кнопок в iOS 15: основные стили и возможности кастомизации.

📖 Написал статью про кастомизацию кнопок в iOS 15, возможно, вы откроете для себя что-то новое.

Можно прочесть про основные стили, конфигурацию, а также, например, про то, как за 10 секунд добавить activityIndicator для кнопки.
👍17🔥4
Xcode поставляется со своей версией Swift, и мы всегда можем обратиться к этому списку. Иногда бывает ситуация, когда обновлять Swift для своего проекта не лучший вариант в текущий момент. Для более старой версии Swift, можно сделать следующее:

1️⃣ Проверьте версию Swift: xcrun swift --version

2️⃣ Узнайте местонахождение: xcrun -f swift

3️⃣ Установите альтернативный набор инструментов Swift, если требуется:

— На этом ресурсе можно скачать нужный вариант. Установите его, он будет располагаться тут: /Library/Developer/Toolchains

— Проверьте идентификатор: cat /Library/Developer/Toolchains/swift-5.5-RELEASE.xctoolchain/Info.plist
Например, CFBundleIdentifier для org.swift.550202109201a

— С идентификатором теперь можно выбирать, какой нужен набор инструментов:

xcodebuild -toolchain org.swift.550202109201a
xcrun -toolchain org.swift.550202109201a


Как альтернатива, можно создать переменную окружения:
export TOOLCHAINS=org.swift.550202109201a

Для проверки, что всё ок, используйте 1️⃣ и 2️⃣ шаги.

@iOS Dev
👍6🔥3
Туториал для начинаюших по Bezier Paths и Shape Layers

Существуют разные способы и разные подходы к тому, как нарисовать "экран" приложения:

— Использовать полученную графику от дизайнеров.

— Реализовать UI в коде.

— Использовать Interface Builder.

— Комбинации способов выше и другие варианты.

🛠Однако иногда компоненты нужно создать программно, и тогда могут возникнуть сложности.

ℹ️ Этих проблем можно избежать, используя класс UIBezierPath, который необходим для создания векторных контуров. С его помощью можно создавать и простые фигуры, например прямоугольники, квадраты, овалы и круги, и очень сложные, добавляя прямые и изогнутые линии для набора точек.

📖 В этой статье предлагается практическое руководство по созданию Bezier Paths. Автор рассматривает серию небольших, но понятных примеров, и знакомит нас с обеими концепциями.

😉 Как говорится, от простого к сложному, шаг за шагом!

@iOS Dev
👍14🔥5