gpt4 book ai didi

ios - 代码优化在 ios Swift 中不起作用?

转载 作者:行者123 更新时间:2023-11-28 12:16:17 24 4
gpt4 key购买 nike

我正在使用 Swift 和 alamofire

如何进行代码优化?这是我对不同 api 的帖子和请求:

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
}
}
}

这是我对另一个 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
}
}
}

然后像这样在 viewcontroller 中调用函数:

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()
}
}
}

如何创建单一功能的多个 post 和 get 请求?

最佳答案

你可以像这样创建单例类当你想调用网络服务时,使用这个方法

class DataProvider: NSObject {

class var sharedInstance:DataProvider {
struct Singleton {
static let instance = DataProvider()
}
return Singleton.instance
}

let baseUrl:String = "http://192.168.1.25:3004/api3/v3/"



func putData( parameter:[String:String], url:String, _ successBlock:@escaping ( _ response: JSON )->Void , errorBlock: @escaping (_ error: NSError) -> Void ){

let path = baseUrl + url
print(path)
print(parameter)

let headers = ["authorization": AppData().token]

Alamofire.request(path, method: .put, parameters: parameter, encoding: JSONEncoding.default, headers: headers).responseJSON { response in

switch response.result {
case .success:
if let value = response.result.value {
let json = JSON(value)
successBlock(json)
}
case .failure(let error):
errorBlock(error as NSError)
}
}
}

这样调用

DataProvider.sharedInstance.putData(parameter: parameter, url: "users/account/update", { (response) in
print(response)

if response["status"].stringValue == "200" {
Utility.showMessageDialog(onController: self, withTitle: "", withMessage: response["message"].stringValue)
}


}) { (error) in
print(error)
}

关于ios - 代码优化在 ios Swift 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46466360/

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