Если коротко, то для загрузки картинок в SwiftUI лучше использовать AsyncImage(url), а если это Swift, то тогда разумно подключить например, Kingfisher- только для картинок или Alamofire для работы с большими данными по сети. Кеширование в этих фреймворках уже встроено и не нужно будет тратить время. Встроенный механизм кеширования в Swift пока лучше не использовать. Не получилось у них.
В мае буду очень занят, точно ничего, а потом буду выпускать мини-уроки по запросам, пока собираюсь объяснить про try, do-catch, actor, возможно про многопоточность.
В этой итерации кода вы не использовали ключевые слова async/await для метода получения данных. Это связано с тем что Alamofire сам управляет потоками?
Евгений, спасибо больше за великолепный курс! Перед получением или неполучением данных, всегда первым высвечивается окошко alert. Оно всегда пустое до получения ответа от сервера. Если я успешно получаю данные, пустой alert просто пропадает. Alert висит даже до получении ошибки и при ее получении, текст просто вставляется в alert.
Вопрос отличный! На засыпку :-) Отдел дизайна Apple и других компаний ищут ответ на этот вопрос. Я могу сказать, что никак. Не тратьте на это время. Хорошо не получится и не нужно. Делайте дизайн для 14 / 14 pro max и всё. На SE никто его не увидит. Те, кто покупает SE, покупают только красивую звонилку и не покупают приложения. Их так мало, что не стоит ломать голову и пальцы. Это, конечно, моё личное мнение!
@@AvenCode типо насколько правильно пользоваться if View() If View2() И как более изящно работать с ними. Просто на ютубе и в сети вечно один способ ( link )
@@InvestorFIRE да, основные только эти два способа. Ещё можно использовать ActionSheet - когда снизу выходит маленькое окно с кнопками. Дальше кастомные. Сам делаешь любой view и с помощью animation выводишь его как угодно, хоть наплывом, хоть сверху, на сколько фантазии хватает. Наверно, можно ещё разворот страницы использовать, как раньше. Я как-то не увлекался этими способами. Action sheet долго был стандартный, только с кнопками. В последних версиях Swift можно использовать Bottom sheet регулировать его высоту, добавлять туда что угодно, даже скролл. ua-cam.com/video/zPKeaKHr8T0/v-deo.html Совсем новая фича UIMenu: ua-cam.com/video/Lf5fRbbtVPc/v-deo.html
@@InvestorFIRE Хороший вопрос! Меня тоже смущает такой код, но его все применяют, даже Paul Hudson. Другой способ, но не аналогичный - добавить .opacity(условие==показать ? : 1 : 0) Логичнее было бы, если использовать hidden(условие) но пока этого нет. Ещё я иногда делаю так. View который нужно показывать по условию описываю в отдельной структуре: struct Romashka: View { let show: Bool var body: some View { if show { ProgressView() } } } а основном view остаётся только Romashka(show: showProgress) Так изящнее.
Спасибо за шикарный курс! Будем ждать урока с получением изображений из сервера и их обработкой, а также с кешами
Если коротко, то для загрузки картинок в SwiftUI лучше использовать AsyncImage(url), а если это Swift, то тогда разумно подключить например, Kingfisher- только для картинок или Alamofire для работы с большими данными по сети.
Кеширование в этих фреймворках уже встроено и не нужно будет тратить время.
Встроенный механизм кеширования в Swift пока лучше не использовать. Не получилось у них.
@@AvenCode спасибо за скорую реакцию и бесценные советы! обязательно попробую
Круто! Узнал как пользоваться Swift Package Manager
Хорошо объясняете. А какие темы в планах?
В мае буду очень занят, точно ничего, а потом буду выпускать мини-уроки по запросам, пока собираюсь объяснить про try, do-catch, actor, возможно про многопоточность.
В этой итерации кода вы не использовали ключевые слова async/await для метода получения данных. Это связано с тем что Alamofire сам управляет потоками?
Да, Alamofire правильно использует потоки для запросов и ответов.
Евгений, спасибо больше за великолепный курс!
Перед получением или неполучением данных, всегда первым высвечивается окошко alert. Оно всегда пустое до получения ответа от сервера. Если я успешно получаю данные, пустой alert просто пропадает. Alert висит даже до получении ошибки и при ее получении, текст просто вставляется в alert.
этот Alert выскакивает, если showError == true. Проверьте. По умолчанию showError должно быть false.
@@AvenCode, спасибо за ответ! Стоит false. Буду искать проблему дальше.
Здравствуйте , как можно сделать интерфейс который будет нормально выглядеть и на 14 про макс и на se 2 ?
просто делаю , а интерфейс съезжает
Вопрос отличный! На засыпку :-)
Отдел дизайна Apple и других компаний ищут ответ на этот вопрос.
Я могу сказать, что никак. Не тратьте на это время. Хорошо не получится и не нужно. Делайте дизайн для 14 / 14 pro max и всё. На SE никто его не увидит. Те, кто покупает SE, покупают только красивую звонилку и не покупают приложения. Их так мало, что не стоит ломать голову и пальцы.
Это, конечно, моё личное мнение!
@@AvenCode хорошо , спасибо , уже несколько дней ищу решение. А все так просто)
Здравствуйте , можете рассказать про все способы перемещения между view ?
Нужно пояснение. Имеете ввиду сдвиг окна влево и всплывание окна снизу?
@@AvenCode , Как раз хочется знать какие есть способы кроме navigationlink и sheet
@@AvenCode типо насколько правильно пользоваться if
View()
If
View2()
И как более изящно работать с ними. Просто на ютубе и в сети вечно один способ ( link )
@@InvestorFIRE да, основные только эти два способа. Ещё можно использовать ActionSheet - когда снизу выходит маленькое окно с кнопками. Дальше кастомные. Сам делаешь любой view и с помощью animation выводишь его как угодно, хоть наплывом, хоть сверху, на сколько фантазии хватает.
Наверно, можно ещё разворот страницы использовать, как раньше. Я как-то не увлекался этими способами.
Action sheet долго был стандартный, только с кнопками. В последних версиях Swift можно использовать Bottom sheet регулировать его высоту, добавлять туда что угодно, даже скролл. ua-cam.com/video/zPKeaKHr8T0/v-deo.html
Совсем новая фича UIMenu: ua-cam.com/video/Lf5fRbbtVPc/v-deo.html
@@InvestorFIRE Хороший вопрос! Меня тоже смущает такой код, но его все применяют, даже Paul Hudson.
Другой способ, но не аналогичный - добавить .opacity(условие==показать ? : 1 : 0)
Логичнее было бы, если использовать hidden(условие) но пока этого нет.
Ещё я иногда делаю так.
View который нужно показывать по условию описываю в отдельной структуре:
struct Romashka: View {
let show: Bool
var body: some View {
if show {
ProgressView()
}
}
}
а основном view остаётся только
Romashka(show: showProgress)
Так изящнее.