iOS - правильное использование struct Constants (с динамическими значениями) - PullRequest
0 голосов
/ 21 апреля 2019

Итак, я построил эту структуру:

struct Constants {
    static let BASE_URL = "http://\(CameraManager.ip)/Nexus.cgi?"
    static let WHOIAM_URL = "\(Constants.Url.BASE_URL)action=SERVERWhoAmI"
    static var SERVERPING_URL = "\(Constants.Url.BASE_URL)session=\(CameraManager.session)&action=SERVERPing"
}

и использование выглядит следующим образом:

    func refreshSession(success: @escaping () -> Void, failure: @escaping (String) -> Void) {
        self.manager.request(Constants.Url.WHOIAM_URL, method:.get).authenticate(usingCredential: self.utiles.getDigestCredential()).responseJSON { (responseObject) -> Void in

            if responseObject.result.isSuccess {
                let value = responseObject.result.value
                let json = JSON(value!)
                print(CameraManager.session)
                if self.parser.isError(json: json).0 {
                    failure(self.parser.isError(json: json).1)
                } else {
                    self.failedPingCounter = 0
                    CameraManager.session = self.parser.parseWhoAmICall(json: json)
                    success()
                }
            }
      }

   func keepAlive(session: String, success: @escaping () -> Void, failure: @escaping (String) -> Void) {

    self.manager.request(Constants.Url.SERVERPING_URL, method:.get).authenticate(usingCredential: self.utiles.getDigestCredential()).responseJSON { (responseObject) -> Void in


}

Как видите, я обновляю значение CameraManager.session. После обновления я использую его в keepAlive, но пока когда я проверяю запрос, я вижу, что он использует старый ... Какой лучший способ добиться того, чего я хочу?

Спасибо заранее!

1 Ответ

1 голос
/ 21 апреля 2019

Статические переменные неявно ленивы , поэтому они не меняются даже после изменения значения CameraManager.session. Поскольку эти значения меняются, я бы не стал делать их статичными, а просто сделал бы их обычными вычисляемыми переменными.

...