Итак, я использую Alamofire для выполнения некоторых HTTP-запросов и пытаюсь использовать политику кэширования, но сервер не имеет флага «Cache-Control» в своих заголовках. Поэтому я хочу добавить этот флаг с помощью диспетчера сеансов делегат метод dataTaskWillCacheResponse
на основе этого ответа здесь.
Для этого я хотел создать класс со статическим общим экземпляром (я не хочу создавать глобальную переменную в AppDelegate. Я думаю, что это не очень хорошая практика) SessionManager и в этом класс переопределяет метод делегата, но я не могу этого сделать.
Вот мой код:
public class Manager: SessionDelegate {
var manager: SessionManager?
weak var sessionDelegate: SessionDelegate?
override init() {
super.init()
let configuration = URLSessionConfiguration.default
configuration.urlCache = URLCache(memoryCapacity: 20 * 1024 * 1024, diskCapacity: 100 * 1024 * 1024, diskPath: nil)
configuration.requestCachePolicy = .returnCacheDataElseLoad
configuration.timeoutIntervalForRequest = 35
self.manager = SessionManager(configuration: configuration)
self.manager = Alamofire.SessionManager(configuration: configuration)
self.manager?.delegate = self
}
}
На self.manager.delegate = self
я получаю сообщение об ошибке: Невозможно назначить свойство: «делегат» - это константа «let»
Я относительно новичок в Swift и Alamofire. Что я делаю не так? И как я могу добиться того, что я пытаюсь сделать?
Изменить: я увидел, что не смог создать синглтон, но смог использовать общий экземпляр и переопределить методы. Проверьте ответ ниже
SessionManager
создает и назначает своего делегата во время своегоinit()
- person SirCJ   schedule 09.07.2018