簡體   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