гайд по вебу 1 часть
Как я довожу iOS-приложение до рабочего билда: от первых ошибок до готового продукта
Это продолжение предыдущего поста про создание MVP‑приложения в Cursor. В первой части я рассказывал, как превратить сырой запрос клиента в чёткое ТЗ и настроить контекст для генерации кода. Теперь — самое интересное: как я фикшу ошибки билда и довожу приложение до работающей версии.
Первый билд — и сразу ошибки
Когда Cursor выдал весь код по моему промпту, я даже не стал его ревьювить, просто сделал ⌘+B и открыл Xcode. Как и ожидалось — красные ошибки по всему проекту. Это нормально: AI сгенерил базовую структуру, но не всегда точно попадает в таргеты, зависимости и специфику SwiftUI-окружения.
- Самому сидеть и разбираться — полезно для обучения Swift, но долго и не всегда эффективно.
- Скормить ошибки обратно в AI — быстрее, проще, и в итоге получается нормальный рабочий промпт для кодера.
Я выбрал второй вариант. Вот как это выглядело.
Как я работаю с ошибками билда
Если ошибок 1–2, я просто копирую их в Cursor и пишу что-то вроде: «При попытке билда вышла вот такая ошибка. Исправь». Модель обычно сразу понимает контекст и выдаёт фикс.
Но если ошибок много (а у меня их было 8–9), то лучше действовать иначе:
- Открываю ChatGPT (или любую другую модель, которая не привязана к файловой структуре).
- Копирую туда все ошибки билда одним списком.
- Пишу промпт:
«После написания кода у меня при билде вышли вот такие ошибки. Сделай промпт для моего AI-кодера (Sonnet 4.5), чтобы он сделал анализ проекта и исправил всё».
Таким образом я получаю один большой, структурированный промпт, который потом просто скармливаю в Cursor. AI не просто начинает хаотично фиксить, а формирует себе todo-список задач и идёт по ним по очереди. Это сильно стабильнее, чем кидать ему ошибки по одной.
Почему ChatGPT, а не сразу Cursor?
Хороший вопрос. ChatGPT не знает мою файловую структуру и весь контекст проекта, но его задача — не фиксить код, а составить грамотный промпт. То есть он:
А уже Cursor, получив этот промпт, применяет его к реальным файлам проекта и исправляет код точечно. Такой двухшаговый подход даёт стабильнее результат, особенно когда ошибок больше 5–7.
Что делать, если после фикса всё равно ошибки?
Бывает, что AI исправил часть проблем, но добавил новые. Классика. В этом случае я:
- Делаю
Clean Build Folder(⇧+⌘+K) — это удаляет кэш билда и пересобирает проект заново. - Смотрю, какие новые ошибки появились.
- Если их мало — кидаю обратно в Cursor. Если много — снова через ChatGPT формирую промпт.
Обычно за 2–3 итерации приложение собирается без критических ошибок. Жёлтые warning'и можно фиксить потом — они не мешают запуску.
Первый запуск — и сразу баги
Когда билд наконец прошёл, я запустил симулятор и проверил, как работает приложение. Оказалось:
- Не открываются папки — то есть я создаю папку, тапаю на неё, но ничего не происходит.
- Нет переключателя светлой/тёмной темы — хотя в ТЗ это было.
- Настройки не сохраняются после перезапуска.
Вместо того чтобы самому копаться в коде, я снова сформировал промпт:
*«После билда приложение запустилось, но есть три проблемы:
- Не открывается экран папки при тапе.
- Нет переключателя светлой/тёмной темы в интерфейсе.
- Выбранная тема не сохраняется после перезапуска.
Исправь»*.
Cursor сгенерил фикс, я применил, пересобрал — и всё заработало. Тема переключается, папки открываются, всё сохраняется. На всё ушло примерно час после первого билда.
Что осталось доделать
После того как базовая функциональность заработала, у меня остался список косметических доработок:
- Доработать онбординг — сделать его чуть более наглядным и понятным.
- Добавить логотип приложения.
- Прописать Privacy Policy и Terms of Use — без этого в App Store не пустят.
- Улучшить UX — например, добавить кнопку сохранения вместо автосохранения через 0.5 секунды, если это будет удобнее пользователю.
Все эти задачи можно точно так же решать через промпты в Cursor. То есть мне не нужно самому рисовать онбординг или писать код для Privacy Policy — я просто формулирую задачу, и AI делает.
Вывод: от первого билда до готового продукта — около 2 часов
Если свести всё к цифрам, то от момента, когда Cursor выдал первый код, до момента, когда приложение запустилось без ошибок и работает корректно, прошло около часа. Ещё час-полтора уйдёт на доработку дизайна, онбординга и юридических экранов. Итого — полноценное MVP-приложение за 2–3 часа чистого времени.
Главное здесь — не пытаться сразу делать всё идеально, а итеративно фиксить проблемы: сначала критические ошибки билда, потом баги интерфейса, потом косметику. Такой подход работает стабильнее, чем попытка с первого раза сгенерить идеальный код.