Image

Я создал приложение для iOS за 3 дня, не имея никаких предварительных знаний о Swift

Что я узнал о виброкодинге, инструментах искусственного интеллекта и о том, как начать свой путь в качестве индивидуального предпринимателя

Делиться

168ce00a368397f74d3c3e3c2efaa09c

Я создал приложение Brush Tracker за 3 дня, не имея никакого опыта работы со Swift, основным языком программирования для iOS. Хотя у меня есть полнофункциональное приложение в App Store, я всё ещё очень мало знаю о Swift, поскольку для его разработки я использовал «vibe-кодирование».

В этой статье я объясню процесс, инструменты ИИ, которые я использовал, а также поделюсь некоторыми своими знаниями и идеями.

Что-нибудь в качестве привлекательной альтернативы

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

Существуют альтернативы Lovable для разработки приложений. Недавно я наткнулся на инструмент под названием Anything, и, поскольку у меня был такой положительный опыт работы с Lovable, я решил попробовать его для разработки своего приложения. Поначалу всё работало хорошо, но в целом всё оказалось не так эффективно, как я надеялся.

Самым сложным было то, что я не мог сразу протестировать свои изменения, исправления и улучшения. В Anything есть встроенный интерфейс для тестирования, но он не очень удобен. Также предлагается протестировать код через приложение Expo, но и это мне не очень понравилось.

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

Я экспортировал код из Anything и попытался протестировать его в Xcode на Mac, но получил множество ошибок и не смог заставить его работать. Поэтому я решил использовать альтернативу. Курсор показался очевидным выбором.

Курсор

Я слышал очень хорошие отзывы о Cursor от многих друзей, которые активно им пользуются. Мне захотелось попробовать самому.

Я использовал тот же запрос в Cursor и попросил его собрать приложение. Затем я создал проект XCode с папками и файлами, сгенерированными Cursor. Я запустил симулятор в XCode, и он заработал с первой попытки.

Цель приложения Brush Tracker — помочь вам регулярно чистить зубы. Оно выдаёт оценку чистоты, которая начинается со 100%. Если вы пропускаете день, оценка снижается, а ваши зубы в приложении начинают выглядеть слегка желтоватыми, что соответствует оценке чистоты.

88b9abfe326ce3f2a817735b2f92ab31

Примечание: все изображения, использованные в этой статье, включают скриншоты из моего приложения Brush Tracker.

В первой версии была реализована только основная функция приложения. Я считаю, что это самый эффективный способ создания продуктов с использованием инструментов на основе ИИ. Прежде чем добавлять новые функции, запустите первую версию.

Чтобы протестировать основную функцию приложения на симуляторе, мне пришлось изменить дату симулятора, не выполнив «сегодняшнюю чистку», чтобы проверить, снизится ли показатель чистоты и обновятся ли визуализации зубов, как ожидалось.

Курсор предложил изменить дату в симуляторе XCode, но в симуляторе больше нет настроек даты и времени. В более старых версиях симулятора XCode эта настройка была, но теперь её нет.

Обходным решением стало изменение даты на моём Mac. Таким образом, дата на симуляторе также изменилась, и я смог протестировать функцию.

Я заметил, что при изменении даты на Mac курсор не видит мою учётную запись и не работает. Всё вернулось в норму, когда я снова установил дату на автоматическую.

Функция таймера

Встроенный таймер чистки зубов стал отличным дополнением к Brush Tracker. Пользователи могут просто отметить сеанс чистки как завершенный или использовать таймер во время чистки.

3e5d290b9fe2f5645d4ebdaccf0a6f97

Мне потребовалось несколько попыток, чтобы эта функция заработала так, как я задумал. Можно просто попросить Cursor добавить функцию, но гораздо лучше, если настроить подсказку и точно объяснить, что вам нужно. Если дать чёткие инструкции, Cursor обычно отлично справляется.

Функция вознаграждения

Я хотел добавить дополнительную мотивацию, когда пользователь завершает ежедневную чистку зубов. После завершения сеанса можно нажать «Получить ежедневную награду» и увидеть короткую мотивационную цитату. Это небольшой штрих, но приятное напоминание о здоровье зубов.

78454f26ef2f4af3d59a339086f8baf7

Вы действительно можете учиться во время кодирования вибраций

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

Я описал проблему в Cursor, и он объяснил, что её вызвало, и как её исправить. Вот два примера того, как Cursor может помочь вам в обучении:

Проблема в том, что при первом касании rewardQuote пуст, потому что handleRewardTap() устанавливает его, но таблица отображается сразу. Мне нужно убедиться, что цитата установлена, прежде чем показывать таблицу.

Исправлена проблема! Проблема заключалась в том, что showReward = true устанавливался сразу после rewardQuote, но отображение таблицы SwiftUI может произойти до полной обработки обновления состояния.

Используйте курсор более эффективно

Курсор — отличный инструмент, но есть несколько способов сделать его более эффективным.

Предположим, что код даёт сбой или выполняется неправильно. Если вы знаете проблемную часть, выделите её и добавьте в чат. Это определённо упростит Cursor решение проблемы.

В Brush Tracker у меня возникла проблема при настройке уведомлений. Я описал проблему и попросил Cursor исправить её. Cursor сообщил, что проблема исправлена, но она всё ещё оставалась. Затем, изменив код, я нашёл, где она возникает, и добавил эту часть в чат.

Cursor исправил это при следующей попытке: проблема в том, что onTapGesture применяется к Picker, но в SwiftUI сегментированные Picker не всегда хорошо реагируют на касания, поскольку у них есть собственная внутренняя обработка жестов. Модификатор onChange срабатывает только при фактическом изменении выделения, а не при касании того же значения.

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

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

Распространение вашего приложения в App Store

После завершения тестирования вашего приложения с использованием симулятора или физического устройства (например, вашего iPhone) пришло время распространить ваше приложение в App Store, чтобы другие могли увидеть (и, возможно, использовать) его.

Это несложный процесс, но он включает множество деталей, которые могут занять много времени, особенно если вы делаете это впервые. Я нашёл видео на YouTube, где подробно, шаг за шагом, объясняется весь процесс.

Выполнив все шаги, я отправил своё приложение на проверку. После одобрения я получил электронное письмо от App Store Connect о готовности приложения к распространению.

Хочу отметить, что я не имею никакого отношения ни к одному из инструментов ИИ, упомянутых в этой статье.

Спасибо за прочтение! Brush Tracker можно попробовать в App Store. Буду рад, если вы его опробуете или оставите отзыв.

Источник: towardsdatascience.com

Каталог бесплатных опенсорс-решений, которые можно развернуть локально и забыть о подписках

галерея

Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.
Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.
dummy-img
dummy-img
Взаимодействие человека и машины погружается под воду.
Взаимодействие человека и машины погружается под воду.
Дифференциально приватное машинное обучение в масштабе с использованием JAX-Privacy
dummy-img
Следующим узким местом в развитии ИИ станут не модели, а способность агентов мыслить сообща.
Image Not Found
Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.

Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.

Это сегодняшний выпуск The Download, нашей ежедневной новостной рассылки, которая предоставляет вам ежедневную порцию событий в мире технологий. Кибермошенники обходят системы безопасности банков с помощью незаконных инструментов, продаваемых в Telegram. В центре по отмыванию денег в Камбодже…

Апр 21, 2026
Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.

Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.

Это сегодняшний выпуск The Download, нашей ежедневной новостной рассылки, которая предоставляет вам ежедневную порцию событий в мире технологий. Кибермошенники обходят системы безопасности банков с помощью незаконных инструментов, продаваемых в Telegram. В центре по отмыванию денег в Камбодже…

Апр 21, 2026
dummy-img

Взгляд на количественную генетику глазами гена

arXiv:2502.12831v3 Тип объявления: замена-кросс Аннотация: Моделирование эволюции непрерывного признака в биологической популяции — одна из старейших проблем эволюционной биологии, которая привела к появлению количественной генетики. С недавним развитием методов GWAS стало крайне важно связать эволюцию распределения признака…

Апр 21, 2026
dummy-img

Взгляд на количественную генетику глазами гена

arXiv:2502.12831v3 Тип объявления: замена-кросс Аннотация: Моделирование эволюции непрерывного признака в биологической популяции — одна из старейших проблем эволюционной биологии, которая привела к появлению количественной генетики. С недавним развитием методов GWAS стало крайне важно связать эволюцию распределения признака…

Апр 21, 2026

Впишите свой почтовый адрес и мы будем присылать вам на почту самые свежие новости в числе самых первых