Делюсь интересными находками/лайфхаками в процессе разработки под iOS/Android, и возможно ты найдешь что-то полезное для себя!
GitHub: https://github.com/easydev991
Post #271
557
EA @easy_dev991
Showing posts older than #272 · Back to latest
NavigationView, который отлично работает на всех версиях iOS, в том числе на iOS 26.menu/picker/confirmationDialog, а вот код этого экрана, и там нет никаких ошибок, и чинить там нечего 🤦♂️easy_dev991 #ios #swiftui #performance Убираем лишние вычисления body в SwiftUI View
Equatable, чтобы избавиться от лишних перерисовок вьюхи. На первом видео до исправления, на втором - после.State-свойства на экране.
struct HTMLContentView: UIViewRepresentable, @preconcurrency Equatable {
static func == (lhs: HTMLContentView, rhs: HTMLContentView) -> Bool {
lhs.infopost == rhs.infopost && lhs.fontSize == rhs.fontSize
}
// остальной код
}
Equatable с момента публикации статьи об этом, и все же он пригодился 👌CoreData: пользователи не видели историю уведомлений, хотя сами уведомления приходили и отображались на экране телефона корректно.Notification Service Extension не мог получить доступ к Core Data файлам из-за неправильной настройки Target Membership. Файлы модели данных не были включены в target для extension, поэтому при попытке инициализации Core Data возникала ошибка.Core Data файлы в Target Membership для NotificationService. После этого extension снова смог сохранять уведомления в базу данных.Target Membership возникла при рефакторинге проекта или добавлении новых файлов, а может быть и вовсе при переходе с "групп" на "папки" 🙈Xcode иногда не добавляет автоматически файлы в нужные targets, особенно при работе с `extension`'ами, которые имеют отдельную конфигурацию.Target Membership при добавлении новых файлов в проект, особенно если они используются в нескольких таргетах.

Version в Xcode на вкладке General не обязана совпадать с версией в App Store Connect.Version между Xcode и App Store Connect — можно прикрепить сборку с версией 999 к версии релиза 1.2, при желании 😱Xcode 26 RC (ссылка), краткий перевод ниже.


Host in CloudKit и добавлен ваш CloudKit Container.Swift Data должны быть или опциональными, или иметь дефолтное значение.timestamp без дефолтного значения, будет краш:Thread 1: Fatal error: Could not create ModelContainer: SwiftDataError(_error: SwiftData.SwiftDataError._Error.loadIssueModelContainer, _explanation: nil).Xcode появятся более прозрачные ошибки на этот случай (бету не ставил).
contentConfiguration внутри ячейкиUIHostingControllercontentConfiguration с нужными отступами:
func setup(with viewModel: DemoCollectionCellViewModel) {
if #available(iOS 16.0, *) {
contentConfiguration = UIHostingConfiguration {
SwiftUIView(viewModel: viewModel)
}.margins(.horizontal, 12) // <- вот тут задали отступы по горизонтали
} else {
setupOld(with: viewModel)
}
}

easy_dev991 Рассказал про 5 способов, от нерабочих до рабочих, почитать можно в платном канале: - базовая подписка - продвинутая подписка - сеньорская подписка