Спасибо за лекцию ! Подскажите, пожалуйста, а что делать, если в ответе приходит словарь, а не массив ? По идее уже не получится написать func obtainCats() async throws -> [Cat], если я все правильно понимаю. В итоге нужно возвращать не массив, а просто Cat и guard let url начинает ругаться, ибо мы уже не можем выкинуть else { return [ ] }. Не совсем понимаю, что нужно возвращать в этом случае, xcode просит вернуть тип Cat, но else { return Cat } тоже нельзя написать, помогите, пожалуйста
@@nikodevjs Если вы под словарем имеете в виду что это и есть объект (условно Cat), то да конечно нужно поменять -> [Cat] на -> Cat; в guard let url для else можно выкинуть например кастомную ошибку или сделать возвращение у метода опциональным и тут просто return nil :)
Благодарю за видео! Подскажите, а репозиторий с примерами из видео доступен где-то?! Очень хотелось бы проверить гипотезу, почему не отображается имя пользователя. Мне кажется, что, создавая его в фоновом контексте и, возвращая в таблицу, обновление таблицы мы должны сделать на главном потоке.
Привет! Создал imageView. Добавил Alignment Horizontaly & Verticaly = 0, установил все constrains = 0, content mode = AspectFit. Как мне теперь прижать к низу картинку в imageView? Сейчас она строго по центру на всех устройствах, а мне нужно чтобы она была прижата к низу.
Хорошие вопросы. мне кажется на мидла/синьора должны быть вопросы из практического опыта, в плане как бы сделал ту или иную фичу, просто примерно набросать подходы/апишки. Плюс вопросы про разные апи , например нотификации, покупки и т.д.
сам по себе массив и array slice конечно имеют свои адреса, но array slice использует ту же самую область памяти для объектов, а не создает новую. Подробнее: developer.apple.com/documentation/swift/arrayslice
Господа, вы делайте ставку еще и на то, что когда человек долго работает, теория вылетает из головы и забывается, потому что в реальной работе она особо не нужна. Поработайте года три без собесов, и забудется вообще все. Поэтому опытным разработчикам зачастую сложно проходить собесы
Вот честно - ставлю дизлайк по той причине что нету никакого понимания у смотрящего сей мувик - был ответ правильный или нет. Всегда коментарий от ведущего - ок ок класс. На некоторые вопросы были неправильные ответы - как это понять? Делай или вставки с коментарием своим после таких ответов или в конце давай отдельное пояснение по всем таким моментам. Иначе стоимость такого интервью - весьма сомнительна И это касается всех видосов данного автора
@@ildarzalyalov5281супер 🎉 Подскажите пожалуйста, почему у ячейки остаются старые данные, если каждый раз когда она создаётся используется новый экземпляр ячейки?
Здравствуйте, спасибо за ваши уроки, очень нравится, у меня появился вопрос на моменте 50:27, в кложуре cellProvider у cell есть свойство delegate, как так? Разве это не свойство таблицы?
Здравствуйте 👋 Мы до этого добавили делегат для ячейки) Это делегат/свойство ячейки, а не таблицы. В начале видео есть часть, где мы просматривали текущую настройку проекта, там это упоминается) Ну и в целом есть более раннее видео, где мы изучали паттерн делегат и как его добавить куда хотим (например в ячейку).
тут один момент надо отметить, что DispatchGroup не гарантирует очередь выполнения операций, то есть если в примере выводилось на экран 1 2 3 это не значит что всегда выполнение задач будет завершаться таким порядком, DispatchQueue просто гарантирует что сколько началось операций столько закончится
Может тогда побудешь кандидатом, а в качестве интервьюера пригласишь кого-нибудь. Чтобы вопросы не повторялись, ведь у другого интервьюера будет другой багаж вопросов, основанный на своём отличном опыте
Пару лет назад, когда искал первую работу и надо было понимание теории, я смотрел курс Ильдара, чтобы все закрепить понятным языком. Сейчас ищу уже на позиции мидл разработчика, снова смотрю курс Ильдара) Кстати, без тебя меня бы не взяли, тк вайпер я как раз и смотрел за день до собеседования, не мог его понять)
Спасибо за урок, такой вопрос. А если у меня есть какой то наблюдатель или запущен какой то таймер, счетчик и т.д. на первой вьюшке, вторая открывается модально ( не на весь экран) то есть в этом случае will/didDissappear не вызываются, но что если при появлении этой второй вьюшки мне надо остановить таймер, остановить наблюдателя или поставить на паузу какой то процесс, как мне узнать что был модальный переход, и мой экран сейчас не на переднем плане ? Спасибо
Ну таймер останавливать например в момент перехода на первый экран (прям где код для открытия модального экрана), а далее активировать таймер обратно можно разными методами: 1) Вызывать в показанном экране в методе viewWillDisappear такой код if modalPresentationStyle == .pageSheet { presentingViewController?.beginAppearanceTransition(true, animated: animated) } Данный код стригерит метод viewWillAppear в первом контроллере, где можно продолжить таймер 2) используя паттерн делегат связать первый и второй экран и вызывать свой метод, чтобы дать знать первому экрану что текущий экран закрывается и нужно продолжить таймер. 3) Поменять .modalPresentationStyle = .fullScreen для нового контроллера, чтобы он показывался на весь экран
Хороше собеседование. Федор хорошо справился. Для всех умников, кто говорит, что якобы вопросы для джуна. Не существуют вопросов для джунов, мидлов или синиоров. Есть просто технология и вопросы по ней. Тот блок вопросов, которые кажутся простыми, синиор, который не ходил долгое время на собеседования или специально не тренировал именно собеседования, может и не вспомнить ответы на них. Собеседование - вещь в себе и к ней нужно просто отдельно готовиться. А синиор, этот в первую очередь не тот, кто научился хорошо отвечать на вопросы собесов, а тот кто может строить приложения со всеми сложностями. Поэтому, если ты заучишь ответы на тн вопросы "синиору", это из тебя не сделает никак хорошего разраба. Во многих странах, синиор это 4 года computer science и лет 7 прикладного опыта. И самое плохое в собесах такого плана, что если кандидат не очень уверенно отвечает на некоторые вопросы, то это не означает, что он плохой программист.