gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 00:49:50 25 4
gpt4 key购买 nike

我是 Swift 新手。尝试了解如何在 View 加载之前初始化 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 运行之前填充这些值,不如考虑如何让您的 View Controller 做正确的事情,无论这些值是否被填充,以及如何让您的 ServerAnalytics 类在值准备就绪时通知 View Controller 。使用委托(delegate)模式,就像 UIKit 所做的那样,似乎是一个很好的策略。

关于ios - 如何在 viewDidLoad 之前在 Swift 中初始化 AFNEtworking 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38271569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com