Salut, je suis nouveau à swift
et alomafire
. Quelqu'un peut-il suggérer comment faire l'optimisation du code? Ceci est mon poste et demande formulée pour différentes années api:l'optimisation du code ne fonctionne pas dans ios swift?
func getPDataFromURL(_ onCompletion:@escaping (Dictionary<String, Any>)-> Void)
{
let token = UserDefaults.standard.string(forKey: "UserLoginToken")
let Usertype = UserDefaults.standard.string(forKey: "Usertype")
let Userbranchid = UserDefaults.standard.string(forKey: "Userbranchid")
let UrlStraing = FETCH_Parent_Profile_URL
print(UrlStraing)
let url = URL(string: UrlStraing)!
var urlRequest = URLRequest(url:url)
urlRequest.httpMethod = "GET"
urlRequest.addValue("application/json", forHTTPHeaderField: "Content-Type")
urlRequest.addValue("application/json", forHTTPHeaderField: "Accept")
let userToken = "Token token=" + token! as String
urlRequest.addValue(userToken, forHTTPHeaderField: "Authorization")
Alamofire.request(urlRequest).responseJSON { (response:DataResponse<Any>) in
switch(response.result) {
case .success(_):
if response.result.value != nil{
print(response.result.value!)
onCompletion(response.result.value! as! Dictionary<String, Any>)
}
break
case .failure(_):
print(response.result.error!)
onCompletion(response.result.error as! Dictionary<String, Any>)
break
}
} } `
Et voici ma deuxième demande de poste pour une autre api:
func getSDataFromURL(_ onCompletion:@escaping (Dictionary<String, Any>)-> Void) {
let token = UserDefaults.standard.string(forKey: "UserLoginToken")
let Usertype = UserDefaults.standard.string(forKey: "Usertype")
let Userbranchid = UserDefaults.standard.string(forKey: "Userbranchid")
let UrlStraing = FETCH_School_Info_URL + "branch_id=" + Userbranchid! + "&student_id=86&user_type=" + Usertype!
print(UrlStraing)
let url = URL(string: UrlStraing)!
var urlRequest = URLRequest(url:url)
urlRequest.httpMethod = "GET"
urlRequest.addValue("application/json", forHTTPHeaderField: "Content-Type")
urlRequest.addValue("application/json", forHTTPHeaderField: "Accept")
let userToken = "Token token=" + token! as String
urlRequest.addValue(userToken, forHTTPHeaderField: "Authorization")
Alamofire.request(urlRequest).responseJSON { (response:DataResponse<Any>) in
switch(response.result) {
case .success(_):
if response.result.value != nil{
print(response.result.value!)
onCompletion(response.result.value! as! Dictionary<String, Any>)
}
break
case .failure(_):
print(response.result.error!)
onCompletion(response.result.error as! Dictionary<String, Any>)
break
}
} }
Et d'appeler la fonction dans viewcontroller comme ceci:
`func SetUpSchoolUIProfiledata() {
Common.sharedInstance.StartActivity(view: self.view)
DispatchQueue.main.async {
APIManager.sharedInstance.getSchoolProfileDataFromURL(){(userJson)->
Void in
self.stop()
let swiftyJsonVar = JSON(userJson)
print("userJson userJson userJson userJson",userJson)
print("swiftyJsonVar",swiftyJsonVar)
let message = swiftyJsonVar["message"].rawString()
let info = swiftyJsonVar["info"].rawString()!
let jsonData = info.data(using: .utf8)!
let dictionary = try? JSONSerialization.jsonObject(with: jsonData, options: []) as! Dictionary<String, Any>
self.schoolName_lbl.text = dictionary?["name"] as? String
self.add1_lbl.text = dictionary?["add_line1"] as? String
print("imgURLstring is ",self.imgURLstring)
self.SetUpProfileImage()
}
} }
comment créer une seule fonction multiple post et obtenir des demandes.
vous pouvez créer la classe singleton pour frapper webservices et passe paramètres et url pour réutilisable –