Swift · 44 строк
Экран показывает цену и время подачи машины и раз в 5 секунд обновляет их. TaxiAPI вызывает completion на фоновой очереди URLSession. order.price — Double.
Отметьте строки с ошибками.
В работе: Экран ожидания машины: пользователь держит его открытым 3–10 минут.
Как проверяем
Нажмите на строку с ошибкой и коротко напишите, что не так. Баг засчитан, если отмечена хотя бы одна его строка. Зачёт — найдено не меньше 60 % багов с учётом серьёзности (критичный весит 3, обычный 2, мелкий 1), а лишних отметок не больше, чем багов в коде. Пустые строки, скобки и комментарии лишними не считаем. Ответ один на подход: после него показываем разбор.
Источник: Яндекс: мобильная разработка, секция «исправить ошибки в готовом коде». Условие пересказано своими словами.
Давали на собеседовании?
Ответов пока мало — ваш поможет.
final class OrderViewController: UIViewController {private let priceLabel = UILabel()private let etaLabel = UILabel()private let api: TaxiAPIprivate var timer: Timer?var orderId: String!init(api: TaxiAPI) {self.api = apisuper.init(nibName: nil, bundle: nil)}required init?(coder: NSCoder) { fatalError("init(coder:) не используется") }override func viewDidLoad() {super.viewDidLoad()timer = Timer.scheduledTimer(withTimeInterval: 5, repeats: true) { _ inself.refresh()}}private func refresh() {api.fetchOrder(id: orderId) { result inswitch result {case .success(let order):let price = "\(order.price) ₽"self.priceLabel.text = priceself.etaLabel.text = "Машина через \(order.etaMinutes) мин"case .failure:break}}}@objc private func cancelTapped() {api.cancelOrder(id: orderId) { [weak self] _ inself?.dismiss(animated: true)}}deinit {timer?.invalidate()}}