我需要使用单例模式来保存数据,并将此数据用于我的所有应用视图。
在我的单例模式中,我想保存alamofire调用中的数据。 我只想调用一次alamofire,然后以单例模式保存此数据。
我试图在private init函数中调用alamofire,但是当我调用单例模式的对象时,alamofire也被调用了。
请问我如何?
class AccountManager {
static let sharedInstance = AccountManager()
var data = JSON()
private init() {
Helper().alomofireGet(URL: "https://wat-stg.stardust-hosting.com/dashboard/home") { home in
self.data = home
}
}
}
答案 0 :(得分:0)
class AccountManager {
static let sharedInstance = AccountManager()
var data = JSON()
private init() {
Helper().alomofireGet(URL: "https://wat-stg.stardust-hosting.com/dashboard/home") { home in
self.data = home
}
}
}
您的代码应该可以工作,但是响应是线程异步的,并且比调用init的时间晚。
因此,如果您使用类似的内容:
AccountManager.sharedInstance // it will call init here
print(AccountManager.sharedInstance.data) // most probably if the init was just called a few moments ago, the data is not yet received from the server.
要进一步了解这种行为:
private init() {
print("called init")
Helper().alomofireGet(URL: "https://wat-stg.stardust-hosting.com/dashboard/home") { home in
print("received data")
self.data = home
}
}