gpt4 book ai didi

ios - 在 ios 中从不同的 View Controller (不同时间)多次调用相同的 Web 服务

转载 作者:搜寻专家 更新时间:2023-11-01 05:43:37 25 4
gpt4 key购买 nike

我只是想知道从不同的 View Controller (在不同的时间)调用相同的 Web 服务的最佳方式是什么。我应该遵循什么样的架构或设计?我不想在每个 View Controller 中编写相同的代码。

最佳答案

如果使用 Alamofire 库,我建议使用

class NetworkManager {
static let shared = NetworkManager()

static let alamofireManager: SessionManager = {
let sessionConfiguration = URLSessionConfiguration.default
sessionConfiguration.timeoutIntervalForRequest = TimeInterval(_TIMEOUT)
sessionConfiguration.timeoutIntervalForResource = TimeInterval(_TIMEOUT)
return Alamofire.SessionManager(configuration: sessionConfiguration)
}()

func performRequest(url: String,
method: HTTPMethod = .get,
parameters: [String: Any] = [String: Any](),
encoding: ParameterEncoding = URLEncoding.default,
contentType: String? = nil,
headers: HTTPHeaders = [String: String](),
success: @escaping(Data, Int) -> (),
failure: @escaping(CustomError) -> ()) {

debugPrint("NetworkManager is calling endpoint: \(url)")
NetworkManager.alamofireManager.request(url, method: method, parameters: parameters, encoding: encoding, headers: headers).validate().response { response in
guard let status = response.response?.statusCode, let data = response.data else {
if let error = response.error {
debugPrint("Error when calling endpoint \(url)")
failure(.unknownError(message: error.localizedDescription))
}
return
}
debugPrint("HTTP Status received: \(status)")
success(data, status)
}
} else {
failure(.noNetworkConnection)
}
}

请随时使用您的自定义错误或您喜欢的任何内容修改failure 处理程序。当然,您需要序列化响应。

关于ios - 在 ios 中从不同的 View Controller (不同时间)多次调用相同的 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50228775/

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