Singleton 的英文意義是獨身,也就是只有一個人,應用在物件導向語言上,通常翻譯作單例:單一個實例(Instance)。Singleton 模式可以保證一個類別只有一個實例,並提供一個訪問(visit)這個實例的方法。
資料來源:https://openhome.cc/Gossip/DesignPattern/SingletonPattern.html
先建立一個class
import Foundation
class UserDataManager{
}
建立一個private(set)的變數
private(set) 是唯讀的意思
private(set) var userData:GetUserResponse.UserData?
只允許自己實例化
private init(){}
實例化
static let shared = UserDataManager()
這個案例只會用到Read與Delete的功能。
func getUserData(email:String,complection:@escaping (UIImage)->Void){
let headers = ["userToken":UserToken.shared.userToken]
let request = HTTPRequest(endpoint: .user, contentType: .json, method: .GET, headers: headers, mail: email).send()
NetworkManager.sendRequest(with: request) { (res:Result<GetUserResponse,NetworkError>) in
switch res {
case .success(let data ):
self.userData = data.userData
self.email = email
if let imageURL = self.userData!.image{
self.takeImage(imageURL, complection: complection)
}
//TODO顯示
case .failure(let err): print(err.description)
//alert
print(err.errMessage)
}
}
}
func clearData(){
self.userData = nil
self.userImage = nil
self.email = nil
}