Введение
Разработка под iOS — это постоянный поиск баланса между производительностью, читаемостью кода и временем, которое вы тратите на написание boilerplate-кода. SwiftUI упрощает создание интерфейсов, UIKit остаётся незаменимым для сложных кастомных компонентов, а Core Data требует продуманной архитектуры. Но даже опытные разработчики часто тратят часы на форматирование структур, написание предикатов или настройку анимаций.
В этой статье я собрал 10 конкретных промтов, которые помогут вам ускорить рутинные задачи. Каждый промт проверен на практике и готов к копипасту. Я намеренно избегаю общих фраз — только рабочие формулировки, которые можно сразу использовать в Xcode или в ChatGPT/Claude для генерации кода.
1. Промт для генерации модели Core Data с предикатами
Задача: Создать сущность Task с полями title, dueDate, isCompleted и методами для фильтрации через NSPredicate.
Промт:
Сгенерируй Swift-код для модели Core Data с именем Task. Поля: title (String), dueDate (Date?), isCompleted (Bool). Добавь extension с методами:
- static func fetchAll() -> NSFetchRequest<Task>
- static func fetchCompleted() -> NSFetchRequest<Task>
- static func fetchOverdue() -> NSFetchRequest<Task>
Используй современный синтаксис Swift (iOS 16+, NSPredicate с #Predicate, где возможно).
Пример использования: Вставьте промт в ChatGPT или Claude, получите готовый класс с @objc(Task) и extension. Это экономит 15–20 минут на написание boilerplate-кода для каждого проекта.
2. Промт для создания ObservableObject в SwiftUI
Задача: Создать ViewModel для экрана списка задач с загрузкой из Core Data.
Промт:
Напиши SwiftUI ViewModel как ObservableObject для списка задач (Task). ViewModel должна:
- использовать @Published var tasks: [Task]
- иметь метод loadTasks() с fetch request из Core Data
- иметь метод toggleCompletion(for task: Task)
- поддерживать SwiftUI lifecycle (iOS 16+)
Не используй сторонние библиотеки, только SwiftUI и Core Data.
Пример использования: После выполнения промта вы получите класс TaskListViewModel с интеграцией @FetchRequest или ручным управлением. Это позволяет избежать типичных ошибок с управлением памятью и контекстом.
3. Промт для кастомного UIView в UIKit с Auto Layout
Задача: Создать кастомный UIView с градиентным фоном и закруглёнными углами, который можно использовать в Interface Builder.
Промт:
Создай класс GradientView, наследующий от UIView. Реализуй:
- @IBInspectable свойства: startColor, endColor, cornerRadius
- переопредели layoutSubviews для установки градиента
- используй CAGradientLayer
- добавь поддержку @IBDesignable для предпросмотра в Interface Builder
Пример использования: Вставьте код в отдельный файл, добавьте @IBDesignable и сразу увидите результат в сториборде. Промт подходит для создания reusable-компонентов.
4. Промт для анимации в SwiftUI
Задача: Анимировать появление и исчезновение элемента с эффектом slide и scale.
Промт:
Напиши SwiftUI-модификатор, который анимирует появление/исчезновение вью с комбинацией .slide и .scale. Используй withAnimation(.spring(response: 0.6, dampingFraction: 0.8)) и transition(.asymmetric). Покажи пример использования на кнопке, которая переключает видимость текстового блока.
Пример использования: Вы получите готовую анимацию, которую можно применить к любому View через модификатор .transition(.customSpringSlide). Это избавляет от необходимости каждый раз писать анимации вручную.
5. Промт для оптимизации производительности SwiftUI списков
Задача: Оптимизировать List или ScrollView для отображения 1000+ элементов с минимальными лагами.
Промт:
Напиши пример SwiftUI-кода, который отображает 1000 строк в List с использованием LazyVStack и идентификацией через id: \.self. Добавь:
- использование .equatable() для ячеек
- ленивую загрузку изображений через AsyncImage
- предотвращение повторного рендеринга через @State и @ObservedObject
Покажи разницу с неоптимизированной версией.
Пример использования: После генерации промта у вас будет две версии кода — медленная и быстрая. Это помогает понять, как работает LazyVStack и equatable на практике.
6. Промт для настройки Core Data Stack с NSPersistentContainer
Задача: Создать синглтон для управления Core Data, поддерживающий миграции и тестирование.
Промт:
Создай класс CoreDataManager с синглтон-паттерном. Используй NSPersistentContainer с именем модели "DataModel". Реализуй:
- lazy var persistentContainer: NSPersistentContainer
- var viewContext: NSManagedObjectContext
- метод saveContext() с обработкой ошибок
- поддержку воркер-контекста для фоновых задач
- автоматическую миграцию (shouldMigrateStoreAutomatically)
Пример использования: Промт генерирует готовый менеджер, который можно скопировать в проект. Вы сэкономите время на настройке контекста и избежите утечек памяти.
7. Промт для Combine и обработки ошибок
Задача: Создать пример Future и PassthroughSubject с обработкой ошибок и retry-логикой.
Промт:
Напиши Swift-код, который использует Combine для загрузки данных из сети. Реализуй:
- Future<Data, Error> для симуляции запроса
- PassthroughSubject для обновления UI
- оператор tryMap для валидации
- retry(2) с задержкой 1 секунда
- sink с обработкой completion и receiveValue
Пример использования: Вы получите готовый пайплайн, который можно адаптировать под URLSession. Это особенно полезно для проектов, где нужно обрабатывать временные ошибки сети.
8. Промт для локализации строк (Localizable.strings)
Задача: Автоматически сгенерировать файл Localizable.strings из кода с ключами.
Промт:
Дай шаблон Localizable.strings для приложения с экранами: Main, Settings, Profile. Включи ключи для заголовков, кнопок и ошибок. Например: "main_title" = "Главная";. Покажи, как использовать NSLocalizedString в SwiftUI и UIKit.
Пример использования: Промт поможет структурировать локализацию с самого начала проекта, чтобы не переписывать строки потом.
9. Промт для тестирования с XCTest (Core Data)
Задача: Написать unit-тест для модели Core Data с in-memory store.
Промт:
Напиши XCTest для Core Data модели Task. Используй in-memory NSPersistentContainer. Тест должен:
- создать объект Task с title и dueDate
- сохранить контекст
- проверить, что fetch возвращает этот объект
- проверить, что isCompleted по умолчанию false
Пример использования: Вы получите готовый тест, который можно запустить в Xcode без изменения основного хранилища. Это ускоряет TDD-цикл.
10. Промт для миграции с UIKit на SwiftUI
Задача: Постепенно внедрить SwiftUI в существующий UIKit-проект.
Промт:
Напиши пример, как интегрировать SwiftUI View в UIKit ViewController с помощью UIHostingController. Покажи:
- передачу данных из UIKit в SwiftUI через @State
- обратную связь через Binding
- пример навигации: push SwiftUI View из UIKit
- как использовать UIViewControllerRepresentable для обратной интеграции
Пример использования: Промт даёт готовый код для поэтапного перехода, что особенно актуально для проектов с большой кодовой базой.
Заключение
Промты — это не замена знаниям, а инструмент для ускорения рутины. Каждый из приведённых выше промтов я тестировал в реальных проектах: от простых to-do приложений до корпоративных решений с тысячами записей в Core Data. Используйте их как стартовую точку, адаптируйте под свои нужды и не бойтесь экспериментировать.
Если вы хотите углубиться в Swift и iOS, рекомендую изучить официальную документацию Apple (SwiftUI, Core Data, Combine) — это основа, которая не устаревает. А промты помогут вам быстрее переходить от идеи к рабочему коду.
Комментарии