> Как понять, что файл на сервере изменился при сохранении имени и пути? (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:

SWIFT
var 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 in
guard let httpResponse = response as? HTTPURLResponse else { return }
if httpResponse.statusCode == 304 {
print("Файл не изменился")
} else if httpResponse.statusCode == 200 {
print("Файл изменился, обновляем данные")
// Сохраняем новые lastModified/ETag из заголовков ответа
}
}
task.resume()

Если сервер не поддерживает такие заголовки, можно сравнивать хеш (например, MD5 или SHA256) содержимого файла, но это требует полной загрузки. Для мобильных приложений предпочтительнее первый метод — он экономит трафик и время.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью