增加注解

This commit is contained in:
JinJiangHuang
2026-03-01 22:23:38 +08:00
parent 99a8cc799b
commit ee8c71dcd4
23 changed files with 374 additions and 24 deletions
+14
View File
@@ -2,8 +2,10 @@ import Foundation
/// - Android OkGo
class NetworkManager {
///
static let shared = NetworkManager()
///
private static let fallbackCharsetNames: [String] = [
"utf-8",
"gb18030",
@@ -17,6 +19,7 @@ class NetworkManager {
"iso-8859-1"
]
///
private static let fallbackStringEncodings: [String.Encoding] = [
.utf8,
.utf16,
@@ -29,9 +32,12 @@ class NetworkManager {
.isoLatin1
]
///
private let session: URLSession
/// JSON
private let decoder = JSONDecoder()
///
private init() {
let config = URLSessionConfiguration.default
config.timeoutIntervalForRequest = 15
@@ -60,6 +66,7 @@ class NetworkManager {
throw NetworkError.httpError(httpResponse.statusCode)
}
// +
guard let str = Self.decodeString(data: data, response: httpResponse) else {
throw NetworkError.decodingError("文本解码失败")
}
@@ -85,6 +92,10 @@ class NetworkManager {
return data
}
///
/// 1)
/// 2)
/// 3) UTF-8
private static func decodeString(data: Data, response: HTTPURLResponse) -> String? {
// 使 gbk / gb2312 / gb18030
if let charset = response.textEncodingName,
@@ -114,6 +125,7 @@ class NetworkManager {
return nil
}
/// IANA `String.Encoding`
private static func encoding(fromIANACharset charset: String) -> String.Encoding? {
let cfEncoding = CFStringConvertIANACharSetNameToEncoding(charset as CFString)
guard cfEncoding != kCFStringEncodingInvalidId else {
@@ -124,12 +136,14 @@ class NetworkManager {
}
}
///
enum NetworkError: LocalizedError {
case invalidURL(String)
case invalidResponse
case httpError(Int)
case decodingError(String)
/// UI/
var errorDescription: String? {
switch self {
case .invalidURL(let url): return "无效的URL: \(url)"