> Как понять, что файл на сервере изменился при сохранении имени и пути? (iOS, Swift)
Уровень: senior · Роль: mobile · Категория: Технические вопросы
Компании: bnine
Стек: iOS, Swift
> Пример ответа
Чтобы определить, изменился ли файл на сервере, если его имя и путь остались прежними, можно использовать несколько подходов. В контексте iOS и Swift наиболее надежный способ — сравнивать метаданные файла, такие как дата последнего изменения (modification date) или размер. Например, при загрузке файла с сервера сохраняйте его lastModified (из HTTP-заголовка Last-Modified) или ETag (уникальный хеш содержимого). При повторном запросе отправляйте эти значения в заголовках If-Modified-Since или If-None-Match. Сервер вернет статус 304 Not Modified, если файл не изменился, иначе — новый файл с кодом 200. В Swift это реализуется через URLSession:
SWIFTvar request = URLRequest(url: url)request.setValue(savedLastModified, forHTTPHeaderField: "If-Modified-Since")// или request.setValue(savedETag, forHTTPHeaderField: "If-None-Match")let task = URLSession.shared.dataTask(with: request) { data, response, error inguard let httpResponse = response as? HTTPURLResponse else { return }if httpResponse.statusCode == 304 {print("Файл не изменился")} else if httpResponse.statusCode == 200 {print("Файл изменился, обновляем данные")// Сохраняем новые lastModified/ETag из заголовков ответа}}task.resume()
Если сервер не поддерживает такие заголовки, можно сравнивать хеш (например, MD5 или SHA256) содержимого файла, но это требует полной загрузки. Для мобильных приложений предпочтительнее первый метод — он экономит трафик и время.
> Похожие задачи по mobile
Что такое паттерн use case
Что такое диплинкинг в iOS
Как посчитать количество уникальных значений в колонке DataFrame?
В чем разница между actors и менеджером памяти с пулом объектов в Swift?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью