Swift中的Result 类型的简单介绍
Swift 5引入了一个新的Result类型, 它使用枚举来处理异步函数的结果。
苹果文档对该类型的描述:
A value that represents either a success or a failure, including an associated value in each case.
声明:
@frozen enum Result<Success, Failure> where Failure : Error
在Result类型出现之前,我们创建异步函数返回结果的方式:
- Objective – C Style
func fetchData(url: URL, completionHandler: @escaping (Data?, Error?) -> Void) {
...
}
- Swift Style
func fetchData(url: URL, successHandler: @escaping (Data) -> Void, errorHandler: @escaping (Error?) -> Void) {
...
}
Result Type
它仅包含两种情况:
- Success 带有结果的值。
- Failure 实现了Error 协议的枚举类型 。
使用举例
struct Post: Decodable {
let title: String
let body: String
}
enum NetworkError: Error {
case domainError
case decodingError
}
func fetchPosts(url: URL, completion: @escaping (Result<[Post],NetworkError>) -> Void) {
URLSession.shared.dataTask(with: url) { data, response, error in
guard let data = data, error == nil else {
if let error = error as NSError?, error.domain == NSURLErrorDomain {
completion(.failure(.domainError))
}
return
}
do {
let posts = try JSONDecoder().decode([Post].self, from: data)
completion(.success(posts))
} catch {
completion(.failure(.decodingError))
}
}.resume()
}
有关Result Type 的更多信息,您可以通过访问以下链接来查看官方文档:
https://developer.apple.com/documentation/swift/result
本文来自博客园,作者:reyzhang,转载请注明原文链接:https://www.cnblogs.com/reyzhang/p/16256763.html
分类:
iOS开发你需要知道的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了