美文网首页
Swift - 可选参数 (if/else) 和enum的用法

Swift - 可选参数 (if/else) 和enum的用法

作者: nicaho | 来源:发表于2024-05-04 13:35 被阅读0次

背景

当写请求接口的callback时,以前我更倾向于用以下这种方式

completion: (HTTPURLResponse?, Error?)

看起来没什么问题,只需要判断 error/ response 是否为nil就行

if let error = error {
}
else if response = response {
} 
else {
}

但是,当 completion: (Data?, HTTPURLResponse?, Error?) 如此形式时,上面的if/else 会变成多少种情况呢

if let error = error {
}
else if response = response {
} 
else if data = data {
}
else {
}

emmm...看起来就很不优雅,而且 Data?, HTTPURLResponse? 通常是互斥的吗

探讨

还有什么方式可以解决以上问题

这里,我们可以引入 enum
我们改为以下这种形式

enum HTTPClientResult {
    case success(Data, HTTPURLResponse)
    case failure(Error)
}

即,数据获取成功时,处理 Data 和 HTTPURLResponse;数据获取失败时,直接处理Error。这,通用也符合实际逻辑

相关文章

网友评论

      本文标题:Swift - 可选参数 (if/else) 和enum的用法

      本文链接:https://www.haomeiwen.com/subject/lhehfjtx.html