设置响应只要该选项不适用,就会为结构取nil的枚举

时间:2018-03-02 04:18:28

标签: swift enums

我有以下枚举,当有structs时需要2 error。但是,根据error,有时LogError将不适用,有时UserError将不适用。例如,对于用户输入验证错误,我不想在日志中写入任何内容,但我确实想向用户显示错误,因此我想在这些情况下为LogError发送nil。我怎么能这样做?

enum Result<T> {
    case Success(T)
    case Error(Int, LogError, UserError) //error code, error title, error message
}

struct LogError {

    var errorMessage: String
}

struct UserError {

    var errorTitle: String
    var errorMessage: String
}

我想使用enum返回响应,如下所示

return completion(.Error(9999, nil, UserError(errorTitle: kINVALID_FIELDS_ERROR_TITLE, errorMessage: errorMessage)))

但是,我收到了错误

nil与预期参数类型不兼容&#39; LogError&#39;

1 个答案:

答案 0 :(得分:1)

如果您希望能够使用LogError,则必须使nil成为可选项:

enum Result<T> {
    case Success(T)
    case Error(Int, LogError?, UserError)
    //                      ^
}