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

标签 ios swift struct global-variables constants

我构建了这个结构:

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

实现我想要的最好的方法是什么?

最佳答案

静态变量是 implicitly lazy这就是为什么即使在您更改 CameraManager.session 值后它也没有改变的原因。由于这些值在变化,我不会将它们设为静态,而只是将它们设为普通计算变量。

关于ios - 以正确的方式使用结构常量(使用动态值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55781595/

相关文章:

ios - 如何设置自定义 View 后退按钮

swift - __lldb_expr_640.MyClassName 错误?

ios - 尝试将导航 Controller 呈现为 rootViewController 时, View 不在 View 层次结构中

C - 结构指针

c - 如何将struct pointer的指针域全部初始化为NULL?

ios - -(无效)scrollViewDidScroll :(UIScrollView *)scrollView too slow in iOS 8

ios - '-mmacosx-version-min' 不允许 '-miphoneos-version-min'

iphone - 获取特定联系人的地址簿组

ios - 布局 UITextField 无论清除按钮 X

c++ - 用户模板化定义结构的 QList