美文网首页
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