主题
网络请求(URLSession)
在 Swift 中,URLSession 是进行网络请求的核心工具,支持数据下载、上传和后台任务。
基本用法
使用 URLSession 创建数据任务,发送 HTTP 请求并接收响应。
swift
let url = URL(string: "https://api.example.com/data")!
let task = URLSession.shared.dataTask(with: url) { data, response, error in
if let error = error {
print("请求失败:\(error.localizedDescription)")
return
}
guard let data = data else {
print("无数据返回")
return
}
// 处理数据
if let jsonString = String(data: data, encoding: .utf8) {
print("返回数据:\(jsonString)")
}
}
task.resume()
JSON 数据解析
结合 Codable
协议解析 JSON 数据:
swift
struct ResponseData: Codable {
let id: Int
let name: String
}
let task = URLSession.shared.dataTask(with: url) { data, _, error in
guard let data = data, error == nil else { return }
do {
let result = try JSONDecoder().decode(ResponseData.self, from: data)
print("解析结果:\(result.name)")
} catch {
print("解析错误:\(error.localizedDescription)")
}
}
task.resume()
使用 async/await
Swift 并发支持 URLSession 的异步请求:
swift
func fetchData() async throws -> ResponseData {
let (data, _) = try await URLSession.shared.data(from: url)
return try JSONDecoder().decode(ResponseData.self, from: data)
}
Task {
do {
let response = try await fetchData()
print("异步请求结果:\(response.name)")
} catch {
print("请求失败:\(error)")
}
}
小结
掌握 URLSession 网络请求及其异步处理,是开发网络应用的基础,提升数据交互效率和用户体验。