Автор большое спасибо за урок! У меня в консоль показывает "status code: Optional(200)", но при открытие экрана "Fetching Data", он пустой, списка нет. У кого-то так было?
значит, данные с сервера пришли. Дальше нужно декодировать и присвоить массиву employees, чтобы они отобразились на экране. Вот что-то из этого не сделано. Ищите. Ставьте print() после каждой операции, найдёте!
да, я забыл обратить внимание на то, что struct Employee должна соответствовать Hashable для того, чтобы List мог выводить её в ForEach. Укажите struct Employee: Hashable { и всё заработает, и String и Int по умолчанию Hashable.
Singleton это один из паттернов в программировании, он используется везде и повсеместно. Очень часто нужен класс с единственной ссылкой на него из всего приложения. Или что имеется ввиду под Production?
@@nikolay4345 Это довольно старый спор. Некоторым он кажется анти-паттерном, то есть подходом, который может быть потенциально опасным, так как это нечто глобальное, а значит, плохо контролируемое. Эти же люди считают использование глобальных методов и переменных также плохим подходом. С другой стороны, глобальные методы (те, к которым есть доступ из любого модуля программы) очень облегчают разработку. Например, если мы храним данные в приложении, то лучше, чтобы это хранилище было единственным и к нему имели доступ все контроллеры. И это будет синглтон. Поэтому не все согласны, что Singleton это анти-паттерн. Это возможно в некоторых случаях, зависит от архитектуры приложения. На начальном этапе лучше не забивать себе этим голову.
Доброго времени суток. Скажите пожалуйста struct Query: должен быть Hashable или 'Decodable' выводит ошибку в if let decodedQuery = try? JSONDecoder().decode(Query.self, from: safeData) спасибо
Query должен быть Decodable. Hashable не обязательно. Hashable важно, когда, например, формируется список forEach(data). вот там, если это не очевидно для компилятора: то data должна быть Hashable (каждый элемент можно сравнить с другим элементом)
Если коротко, то Combine не прижился. Оказался сложнее, чем планировалось и народ его не поддержал. Так что учить его не стоит. На замену пришли Observation и SwiftData.
@@AvenCode спасибо! я сам не давно начал изучать swift и swift UI перешел с web, создал несколько мелких программ с помощью combine, но думаю перейти на ваш метод! если вам не трудно создайте так же видео про POST чтобы было понятнее (вместе с view), а так же если можно создайте видео про Observation и SwiftData думаю включая меня это выручит всех! спасибо за ответ и за уроки!
Качество и подача материала поражают! Спасибо вам за проделанную работу. Пожалуйста, не забрасывайте канал, уверен, подписчики будут.
Вы не только замечательный разработчик, но еще и прекрасный приподователь, спасибо вам огромное за ваш труд !!!
Спасибо за такой отзыв! Придётся продолжить…
@@AvenCode очень будем ждать ))
Как всегда на высшем уровне Евгений… 💫 великолепное изложение материала
Эх,жаль просмотров мало... Спасибо за урок!
👍👍👍
Автор большое спасибо за урок!
У меня в консоль показывает "status code: Optional(200)", но при открытие экрана "Fetching Data", он пустой, списка нет. У кого-то так было?
значит, данные с сервера пришли. Дальше нужно декодировать и присвоить массиву employees, чтобы они отобразились на экране. Вот что-то из этого не сделано. Ищите. Ставьте print() после каждой операции, найдёте!
Initializer 'init(_:id:rowContent:)' requires that 'Employee' conform to 'Hashable' ошибка List не работает
да, я забыл обратить внимание на то, что struct Employee должна соответствовать Hashable для того, чтобы List мог выводить её в ForEach.
Укажите
struct Employee: Hashable {
и всё заработает, и String и Int по умолчанию Hashable.
@@AvenCode спасибо. Хорошие уроки , очень интересно смотреть
Хотел узнать, используется ли singleton в Productione?
Singleton это один из паттернов в программировании, он используется везде и повсеместно. Очень часто нужен класс с единственной ссылкой на него из всего приложения. Или что имеется ввиду под Production?
@@AvenCode Скажите пожалуйста почему Singleton иногда называют антипаттерном?
@@nikolay4345 Это довольно старый спор. Некоторым он кажется анти-паттерном, то есть подходом, который может быть потенциально опасным, так как это нечто глобальное, а значит, плохо контролируемое.
Эти же люди считают использование глобальных методов и переменных также плохим подходом.
С другой стороны, глобальные методы (те, к которым есть доступ из любого модуля программы) очень облегчают разработку. Например, если мы храним данные в приложении, то лучше, чтобы это хранилище было единственным и к нему имели доступ все контроллеры. И это будет синглтон.
Поэтому не все согласны, что Singleton это анти-паттерн. Это возможно в некоторых случаях, зависит от архитектуры приложения.
На начальном этапе лучше не забивать себе этим голову.
@@AvenCode большое спасибо за такой подборный ответ.
было бы круто еще и на UIKit такой обзор сделать) SwiftUI юзать очень непривычно) спасибо автору за труды
Доброго времени суток. Скажите пожалуйста struct Query: должен быть Hashable или 'Decodable'
выводит ошибку в if let decodedQuery = try? JSONDecoder().decode(Query.self, from: safeData) спасибо
Query должен быть Decodable. Hashable не обязательно. Hashable важно, когда, например, формируется список forEach(data). вот там, если это не очевидно для компилятора: то data должна быть Hashable (каждый элемент можно сравнить с другим элементом)
автор добрый день! хотел бы узнать ваше мнение о фетче данных с помощью фрэймворка Combine
Если коротко, то Combine не прижился. Оказался сложнее, чем планировалось и народ его не поддержал. Так что учить его не стоит. На замену пришли Observation и SwiftData.
@@AvenCode спасибо! я сам не давно начал изучать swift и swift UI перешел с web, создал несколько мелких программ с помощью combine, но думаю перейти на ваш метод! если вам не трудно создайте так же видео про POST чтобы было понятнее (вместе с view), а так же если можно создайте видео про Observation и SwiftData думаю включая меня это выручит всех! спасибо за ответ и за уроки!
@@albertasadov1087
Поддерживаю!) Автору канала больше спасибо за такое хорошее объяснение!