繁体   English   中英

如何在viewDidLoad之前在Swift中初始化AFNEtworking类

[英]How do I initialize an AFNEtworking class in Swift prior to viewDidLoad

我是Swift的新手。 试图了解如何在查看之前初始化我的AFNetworking类,但确实加载了。 我正在像这样从ViewController访问类

var serverAnalytics = ServerAnalytics()
print(serverAnalytics.today)

问题是来自JSON文件的类中的存储变量未在viewDidload之前初始化。 因此,属性为默认/空白。 使用AFNetworking和SwiftyJSON。

import Foundation

class ServerAnalytics {

    let manager = AFHTTPSessionManager()
    var today:Double! = 0
    var complete:Bool! = false


    init(){
    manager.GET("http://www.somerandomjsonurl",
        parameters: nil,
        progress: nil,
        success: { (operation: NSURLSessionDataTask,responseObject: AnyObject?) in
            if let responseObject = responseObject {
                //print("Response: " + responseObject.description)
                let json = JSON(responseObject)
                 self.today = json["salesdata"]["list"][0]["todays_sales"].double!

            }

        },
        failure: { (operation: NSURLSessionDataTask?,error: NSError) in
            print("Error: " + error.localizedDescription)
        })

    }

}

这里的基本问题是ServerAnalytics类正在使用网络调用填充这些值,这意味着您无法真正知道何时填充它们,或者如果网络请求由于某种原因失败,它们是否将完全填充。

因此, viewDidLoad考虑如何在viewDidLoad运行之前确保这些值是否已填充,不如考虑如何使您的视图控制器正确地执行这些值(无论是否填充这些值),以及如何让ServerAnalytics类在视图ServerAnalytics告诉视图控制器时执行正确的操作值已准备就绪。 与UIKit一样,使用委托模式似乎是一个不错的策略。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM