以正确的方式使用结构常量(使用动态值)



我构建了这个结构:

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中使用它,但是当我检查请求时,我可以看到它使用了旧的......

实现我想要的东西的最佳方式是什么?

静态变量是隐式的惰性,这就是为什么即使在您更改CameraManager.session值后它也不会更改的原因。由于这些值正在发生变化,我不会使它们成为静态的,而只是使它们成为正常的计算变量。

相关内容

  • 没有找到相关文章

最新更新