iSilver dev 🍏
46 subscribers
129 photos
16 videos
1 file
47 links
Переобуваюсь в iOS разработчика в 45.
Swift Xcode SwiftUI
Евгений - @icleverstyle
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Даунгрейд - реальный способ запустить приложение быстрее.

Долго работал над настройкой пользовательских напитков, список, добавление новых, активация, дезактивация... а оно вообще пользователю надо?!

Может и надо, но лучше спросить и только потом сделать, а пока нет приложения - нет н чего, в тч и пользовательских напитков!

И... решил выпилить уже сделанные заработки из приложения - упростить и запустить.

Утром обнаружил, что приложение в состоянии MVP - минимально рабочая версия.

Так что можно немного "причесать" и пора выкладывать в стор!
🔥3
Мой портрет глазами ChatGPT
Планы на выходные - разобраться с публикацией в App Store
🔥3
🧹 Про чистоту кода

Совсем внезапно узнал про мощный инструмент проверки кода на соблюдение стилевых правил - SwiftLint.

Устанавливаешь SwiftLint


brew install swiftlint


Добавляешь файл с правилами проверки в корень проекта:
.swiftlint.yml

Сами правила, которые прописываются в файле можно найти в интернете, либо запросить составить ИИ.

Для проверки команда swiftlint в терминале.

Для автоматического исправления кода (частично):

swiftlint autocorrect

Правила для UIKit


# отключённые правила
disabled_rules:
- trailing_whitespace # Пробелы в конце строки
- force_cast # Явное приведение типов через as!
- function_body_length # Длинные функции пока допускаем

# дополнительные правила
opt_in_rules:
- empty_count # Не использовать .count == 0 вместо .isEmpty
- force_unwrapping # Не использовать ! при извлечении optional
- indentation_width
- unused_declaration # Удалять неиспользуемые переменные и функции

analyzer_rules:
- unused_declaration # неиспользуемые переменные и функции

# Какие папки проверять
included:
- MyApp

# Папки-исключения
excluded:
- Pods
- Carthage
- fastlane
- build
- Generated

# Проверять длину строк
line_length:
warning: 120
error: 200
ignores_comments: true
ignores_urls: true

# проверять имена переменных и констант
identifier_name:
min_length: 3
max_length: 40
excluded: # Исключаем имена типа x, y в циклах и координатах
- id
- x
- y
- i
- j
- a

# Стиль отступов
indentation_width:
indentation_width: 4
include_comments: false
include_compiler_directives: false
include_multiline_strings: true

# Проверка комментариев FIXME и TODO
todo:
severity: warning
Please open Telegram to view this post
VIEW IN TELEGRAM
👌1
🗓 Отчёт за неделю - это хорошая идея

Текущий прогресс по курсам Swift

✔️ +0 17/100 - 100 дней SwiftUI
✔️ +0 18/39 - Усов книга 1
✔️ +2 9/29 - Angela Yu

🟩🟩🟩⬜️⬜️⬜️⬜️⬜️⬜️⬜️ - 100 дней
🟩🟩🟩🟩🟩🟩⬜️⬜️⬜️⬜️ - Усов
🟩🟩🟩🟩⬜️⬜️⬜️⬜️⬜️⬜️ - Angela Yu

Проект "iOS по взрослому"
- продолжаю делать таск "Верстка 1.1 Онбординг"

В курсе Angela Yu - уроки 6 (калькулятор) и урок 7 (клилофон)

Книгу Усова на этой неделе не трогал.

Pet-проект - доделал проект до уровня MVP.
Осталось опубликовать (заполнить кучу форм)

Занимаюсь iOS разработкой так или иначе ежедневно - это очень хорошо!

Основную часть времени отведенного на iOS потратил на разработку своего приложения, именно обучением занимался сильно меньше - хочется больше баланса.

🗓 Планы на неделю:

"iOS по взрослому"
- Завершить таск "Верстка 1.1 Онбординг"
- взять новый таск (буду смотреть доступные на момент завершения предыдущего таска)

Усов книга 1 (перенос с позапрошлой недели)
- изучить 2 главы: struct, class (44 стр.)

Angela Yu - Приложение "Таймер варки яиц" / Опционалы, условыные операторы

Pet-проект
- опубликовать в App Store

Ну что ж: погнали!
Please open Telegram to view this post
VIEW IN TELEGRAM
Получил первый отзыв от личного тестировщика моих приложений (жена).

Кстати, очень жесткий тестировщик )))

Интересно именно наблюдать в живую как другой человек впервые видит приложение и пытается с ним взаимодействовать.

Сразу в его жестах видишь его ожидания от взаимодействия с интерфейсом.

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

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

Пока с маленькой доработкой своего приложения для изучения немецкого.

Добавил склонение глаголов в карточки.

Но основная про Лема которую пришлось решать - обратная совместимость карточек.

Изменил структуру карточки и все колоды и карточки пропали (((
👍1
Как вы ведете учет личных финансов?

Изучаю тему для создания соответствующего приложения.
Stop overthinking.
Just do it.


… Сказал я себе и начал.

Приложение для ведения домашней бухгалтерии.

На немецком: Haushaltsbuch

SwiftUI

Пока сделано:
- главный экран-меню
- форма добавления расхода
- форма редактирования расхода
- журнал расходов
- настройка статей расходов (2 уровня)
Media is too big
VIEW IN TELEGRAM
Haushaltsbuch

Небольшой прогресс:
- доходы
- перемещения
- журнал операций
Haushaltsbuch
(Домашняя бухгалтерия)

Прогресс:
- добавил справочник валют
- работаю над добавлением Кошельков и Карт

Основная сложность изменение в БД
Media is too big
VIEW IN TELEGRAM
Итоги первой недели разработки приложения для ведения домашней бухгалтерии

Формы добавления и редактирования записей:
- доход
- перемещение между картами и кошельками
- расход

Журнал операций
- фильтр по типу операций (доход, расход, перемещение)
- фильтр по тегу

Операция фиксации остатков в кошельках и картах с журналом операций.

Сводный отчет по расходам:
- выбор периода отчета
- фильтр по валютам
- фильтр по тегу

Справочники
- категории (статьи) расходов
- источники доходов
- магазинов (мерчантов)
- валют
- кошельков и карт
- тегов

Ввод данных
- заполнение форм в приложении
- голосовая команда Siri открывает приложение и форму добавления нового расхода по голосовой команде Добавить расход
- автозаполнение формы расхода на основании данных буфера обмена (скопированный текст СМС-уведомления банка)

Фишки
- при открытии формы ввода фокус и курсор в поле ввода суммы, клавиатура появляется.

- 3 кнопки «Сохранить»: в навбаре, строке ввода суммы и в конце формы

- кнопки сохранить активны при заполнении, выборе обязательных полей и кнопок.

- Магазин (мерчант) используется для автозаполнения категорий расходов.

Ближайшие планы:
- бюджет
- отчеты план/факт
- пользователи и совместное использование (семейный доступ).
❤‍🔥1
Домашняя бухгалтерия
HausHaltsBuch

Прогресс...

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

Потерял прогресс за ВС. Весь ПН восстанавливал потерянное. Восстановил не до конца, решил отчеты пока не делать.

2. Со вчера нырнул в "кроличью нору" реализации совместного доступа:
✔️ Авторизация через Apple ID
- Приглашения для совместного доступа
- Синхронизация данных через CloudKit


Про авторизацию через Apple ID

- Оказывается данные и email пользователя передаются от apple ID один раз при первой верификации.

Соотвественно надо сохранять имя пользователя на случай если пользователь разлогиниться и залогиниться снова.

Если сохранить локально, то при переустановке приложения данные потеряются.

Решение:
- при первой авторизации сохранил локально в UserDefaults
- синхронизировал сразу в iCloud (CloudKit)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥1
Открытие недели: Swift Data не умеет делать совместный доступ 🥲

Большую часть недели посвятил миграции с Swift Data на Core Data.

В процессе думал, что создать с нуля на Core Data было бы проще, но решил получить опыт миграции.

Почти закончил миграцию:
- все справочники
- все транзакции
- единственный отчет

Осталось мигрировать:
- авторизацию через Apple ID
- работа с Siri

Потом исправить мелкие ошибки UI и навигации и можно приступать к реализации совместного доступа.
Shared zone в CloudKit

Миграцию на Core Data завершил.

Перешел к реализации совместного доступа, который реализуется через Shared zone в CloudKit.

Создал включение Общей зоны.
Сейчас вношу правки в Транзакции и Справочники, чтобы данные читались и записывались в зависимости от текущего режима: Личный или Общий.

Что это значит для пользователя:
- могу вести часть расходов/доходов не показывая супругу (так же и в обратную строну)
- другая часть - общие расходы/доходы видны обоим.

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