Зачем мне нужно было устанавливать политику кэширования для URLRequest, если она уже была установлена ​​в URLSession, чтIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Зачем мне нужно было устанавливать политику кэширования для URLRequest, если она уже была установлена ​​в URLSession, чт

Сообщение Anonymous »


Я создаю приложение для iOS, которому необходимо часто проверять изменения в файле JSON на моем сервере. В процессе этого я обнаружил особенность кэширования. На моем сервере сейчас работает очень простой http-сервер, пока я начинаю работу.

Когда я понял, что кеширование мешает моим клиентам писать. Сначала я написал код:

let urlSession = URLSession(конфигурация: .ephemeral) функция updateModel() { let (data, _) = попробуйте await urlSession.data(from: URL(string: myURLString)!) // Делаем что-то с данными } Это было предложено на форуме разработчиков Apple.

Это не сработало, поэтому я пошел дальше и попробовал это

let urlSession = { var session = URLSession (конфигурация: .ephemeral) session.configuration.urlCache = ноль session.configuration.requestCachePolicy = .reloadIgnoringLocalAndRemoteCacheData ответный сеанс }() функция updateModel() { let (data, _) = попробуйте await urlSession.data(from: URL(string: myURLString)!) // Делаем что-то с данными } Этот подход был предложен в ответе на вопрос о переполнении стека здесь. Стоит отметить, что люди в комментариях упоминали, что у них это не сработало или им нужно было вызвать URLCache.shared.removeAllCachedResponses(), что не идеально. Я не хотел делать этот вызов, и этот код у меня не работал, поэтому я перешел к чему-то более сложному.

let urlSession = { var session = URLSession (конфигурация: .ephemeral) session.configuration.urlCache = ноль session.configuration.requestCachePolicy = .reloadIgnoringLocalAndRemoteCacheData ответный сеанс }() функция updateModel() { let request = URLRequest(url: URL(string: myURLString)!,cachePolicy:.reloadIgnoringLocalAndRemoteCacheData) let (data, _) = попробуйте дождаться urlSession.data(для: запроса) // Делаем что-то с данными } Я не знаю, откуда мне пришла в голову идея попробовать.

Итак, я гость. Ура! Оно работает. Но еще... зачем все это было нужно? Почему мне нужно было отключить кеш как на уровне URLSession, так и на уровне URLRequest? Связано ли это с использованием мной строкового URL-адреса, возможно, с тем, как мой сервер продает ресурсы, может быть, с iOS 17, типом контента, который я продаю. Я хотел бы понять больше.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Проблемы с подключением бэкэнда Flask к приложению Kivy с помощью UrlRequest
    Гость » » в форуме Python
    0 Ответы
    59 Просмотры
    Последнее сообщение Гость
  • Android Studio (не установлена) при запуске Flutter Doctor, когда Android Studio установлена ​​на компьютере
    Anonymous » » в форуме Android
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • URLSession — «данные (от:)» устарели в iOS 15.0.
    Anonymous » » в форуме IOS
    0 Ответы
    43 Просмотры
    Последнее сообщение Anonymous
  • Получите код состояния HTTP-ответа URLSession.shared.dataTask.
    Гость » » в форуме IOS
    0 Ответы
    56 Просмотры
    Последнее сообщение Гость
  • URLSession реализует URLSessionDelegate для обхода любой проверки сертификата
    Гость » » в форуме IOS
    0 Ответы
    40 Просмотры
    Последнее сообщение Гость

Вернуться в «IOS»