Как стать автором
Поиск
Написать публикацию
Обновить
10.7

Swift *

Открытый объектно-ориентированный язык

Сначала показывать
Порог рейтинга
Уровень сложности

WWDC 2023. Новый фреймворк SwiftData для управления данными. Эксперименты

Уровень сложностиСредний
Время на прочтение33 мин
Количество просмотров3.1K

Одним из заметных событий WWDC 2023 для разработчиков, программируемых на языке Swift, стало появление фреймворка SwiftData. В этой статье показано, как создать Схему данных в SwiftData, как выполнить CRUD операции (Create - Создать, Read - прочитать, Update - модифицировать, Delete - удалить), как выполнять запросы Query к данным с помощью предиката Predicate, как использовать "живой" запрос @Queryв SwiftUI и как его динамически настроить. Вы узнаете, как эффективно "закачивать" JSON данные в SwiftData хранилище без блокировки пользовательского интерфейса (UI).

Читать далее

Подводные камни тестирования кода в Swift Concurrency

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров2.2K

Привет, Хабр! На связи Александр Пиманов и Камиль Ишмуратов, мы iOS-разработчики в IBS. В наших проектах мы активно используем новые технологии и стараемся покрывать наш код unit-тестами. В этой статье мы расскажем о проблемах тестирования асинхронного кода и как их можно попытаться решить.

Читать далее

Как не забросить свой пет-проект. Мой кейс запуска приложения в App Store

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров6.2K

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

Я рассчитывал выпустить его месяца за три… Но проект удалось релизнуть лишь спустя 4 года

Рассказываю что помогло запустить MVP когда мотивация давно закончилась. Делюсь быстрым и простым техническим стеком для микро команд и советами для начинающих индихакеров.

Читать далее

UICollectionView внутри UICollectionView программно

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров3.6K

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

Ну что, приступим, для начала разберемся с основной коллекцей во ViewController

Читать далее

Уровни доступа в Swift: Как Держать Всё под Контролем

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров4.3K

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

Давай разберёмся подробнее, что это такое и как применять.

Читать далее

SwiftData: быстрый старт

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров15K

Apple представила на WWDC23 большое количество новых вещей для разработки. Хранения данных — не исключение. SwiftData - это новый фреймворк для работы с хранением данных внутри приложения, который представляет собою новый уровень абстракции над уже существующем механизмом - CoreData.

Читать далее

Насколько Swift удобен для DSL?

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров3.1K

SE-0195 Dynamic Member Lookup
SE-0216 Dynamic callable
SE-0253 CallAsFunction
Исходя из мотивационной секции proposal, @dynamicCallable и @dynamicMemberLookupбыли добавлены для интеропа с динамическими языками, такими как Python, JavaScript. Но их использование этим не ограничивается.

Читать далее

Sticky Header в SwiftUI

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров4.6K

Cоздаем липкие заголовки на SwiftUI (Без introspect и GeometryReader)!
Попутно понимая как SwiftUI взаимодействует с UIKit.

Читать далее

Thread Safety in Swift

Время на прочтение11 мин
Количество просмотров6.4K

Потокобезопасность в Swift

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

Читать далее

Библиотека криптования ChaCha20

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров4.6K

Современные стандарты разработки пользовательских приложений выдвигают определенные требования к шифрованию информации. Например, документ RFC-7539 содержит подробную и исчерпывающую информацию о том, какие алгоритмы рекомендуется применять и как программировать некоторые из них. Далее предлагается к подробному рассмотрению один из этих алгоритмов - ChaCha20.

Читать далее

Раскладываю Swift Runtime на детали

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров9.7K

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

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

Привет, меня зовут Александр Пахомов, я работаю в Альфа-Банке на проекте для юридических лиц Альфа Бизнес Мобайл. В статье расскажу про Runtime:

— покопаемся в исходниках: узнаем на каком языке написан и что делает;
— напишем простой код, скомпилируем и посмотрим как он выглядит на уровне SIL и IR;
— добавлю в мой исходный код функцию swift_releaseи посмотрю результат;
— узнаю, что будет, если не учесть ‘name mangling’;
— и покажу ненастоящую функцию.

Читать далее

OptionSet в деталях

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров3.1K

Элементарный тип OptionSet в Swift кроет в себе много интересного. Почему набор опций представлен массивом а не Set, как работает алгебра множеств и когда его можно применить в повседневных задачах

Читать далее

MVP with Router

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров6.9K

Данная статья - моя попытка разобраться и объяснить архитектурный паттерн MVP with Router.

Про сам паттерн MVP в на просторах интернета можно найти довольно много информации, например по следующей ссылкам:

Архитектурные паттерны в iOS

Архитектурные паттерны в iOS: страх и ненависть в диаграммах. MV(X)

А вот про разновидность данного паттерна, которая решает проблему сборки, возникающую при использовании MVP информации не так уж и много. Давайте попробуем разобраться что такое Router применительно к паттерну MVP, зачем он нужен и как его использовать.

Читать далее

Ближайшие события

Логи Xcode — читаем самостоятельно?

Уровень сложностиСложный
Время на прочтение10 мин
Количество просмотров5.8K

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

Читать далее

Что нового в SwiftUI для iOS 17?

Уровень сложностиСредний
Время на прочтение43 мин
Количество просмотров5.4K

SwiftUI продолжает быстро развиваться, и в этом году мы видим огромное количество улучшений в прокрутке, интересные новые эффекты SF Symbols, продвинутую поддержку шейдеров Metal и многое другое.

Некоторые обновления в этом релизе из числа тех, которые автор предлагал лично. Среди них - добавление шейдеров Metal, улучшение работы Color с Codable, добавление замыкания по завершении для анимаций, которое дает нам возможность анимировать градиенты. Теперь мы ещё можем скруглять углы прямоугольника по своему усмотрению. Только благодаря первой бета-версии автор закрыл как минимум дюжину своих предложений!

Читать далее

Полезные iOS-инструменты для дебаггинга

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров9.5K

Привет! Меня зовут Альберт, я занимаюсь iOS-разработкой в компании SimbirSoft! Хочу поделиться инструментами для дебаггинга iOS-приложений, которые юзаю лично сам. Любой разработчик наверняка знает, что создание высококачественного приложения требует не только написания кода. Одна из важнейших составляющих достижения успеха в этом деле — эффективная отладка. К счастью, существует множество инструментов, которые помогут быстро и эффективно диагностировать, а также устранять проблемы. В этой статье мы подробно рассмотрим нативные и сторонние инструменты, доступные для отладки iOS-приложений, как использовать эти инструменты для диагностики и устранения распространенных проблем. Если интересно, тогда ныряйте под кат.

Читать далее

Async / Await in Swift

Время на прочтение14 мин
Количество просмотров17K

Apple представила концепцию async/await в Swift 5.5 и анонсировала ее на сессии WWDC21. Сегодня мы увидим async/await в действии и то, как мы можем использовать async/await для написания удобочитаемого асинхронного кода в своем приложении.

Читать далее

SOLID в Swift. Простое объяснение с примерами для начинающих

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров15K

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

Давайте рассмотрим каждый из этих принципов с примерами нарушения и соблюдения на языке Swift.

Читать далее

Бинарное дерево поиска в Swift

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров4.3K

Вы когда‑нибудь задумывались, почему результаты поиска файлов появляются так быстро? В этой статье мы рассмотрим удивительную структуру данных, известную как двоичное дерево (бинарное дерево), и узнаем, как именно она позволяет достичь такой быстрой обработки и поиска.

Читать далее

.xcstrings в Xcode 15

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров3.6K

Один из самых неприятных аспектов iOS‑разработки — это локализация и плюрализация строк. Мало того, что они разбиты на разные файлы: strings и stringsdict, так ещё и работа с этими файлами для начинающего разработчика может оказаться не сильно очевидной. «Что такое %#@⁠VARIABLE@?», «Как добавлять несколько плюралок в одну строку?», «Как использовать плюралки в локализованных строках?», «Как добавлять разные переводы для разных девайсов?» — Все эти вопросы рано или поздно возникают у разработчика. После получения ответов на них каждый задаётся вопросом: «А почему всё так плохо?»

Читать далее