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