Комментарии 5
Вот очень не люблю когда используют слово intent для, по сути, моделирования действий для достижения этого самого замысла. Как пример, я как пользователь, открываю офисный пакет с замыслом написать новое резюме на новое место работы о чем офисный пакет и понятия не имеет — он только видит действие (запуск программы).
В этом же и есть вся сложность разработки, что инженер пытается дать пользователю как можно больше возможных действий и упрощать их комбинирование для того, чтобы пользователю было легко реализовать его intent. И при этом инженер никогда и не знает о замысле пользователей — он только гадает и предполагает, и закладывает поддержку действий исходя из своих предположений.
И это очень кривая дорожка, когда инженер начинает предполагать, что совершение действий и есть замысел пользователя — ну вот никогда не будет у пользователя замысла нажать кнопку «Д». Он не будет просыпаться с утра и думать «ах да, надо не забыть нажать кнопку «Д» в программе Х». Все это ведёт к появлению абсолютно бесполезных программ и неработающих концепций.
Извините что немного не по теме статьи написал, затриггерило :)
Как оказалось, сделать Router с передачей данных на следующий экран и возвратом данных обратно во View, который вызвал этот экран, не так-то просто.
А разве не для этого сделали @StateObject? Создали экземпляр в родительской View, передали в дочернюю и ничего синхронизировать не надо.
@StateObject немного изменяет цикл жизни атрибута. Внутри Router, если это надо, использовать можно и нужно. У кого минимальная версия iOS 14, я бы рекомендовал заменить
@ObservedObject private var intent: RootIntent
на
@StateObject private var intent: RootIntent
MVI и SwiftUI – одно состояние