[英]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.