Return 非可选 Swift 中的 .Success 枚举
Return non-optional with .Success enum in Swift
问题:
当传入的枚举类型为 .Success
时,如何以强制传递非可选类型的方式定义函数?如果无法做到这一点,最好的建模方法是什么?
上下文:
我正在围绕我们的 API 制作基于完成处理程序的包装器。传回处理程序的参数包括提供响应状态的 enum
和 User
实例。 enum
是这样的:
enum ResponseStatus : Int {
case Success = 200
case InvalidParameters = 422
// and a few more
}
方法签名是这样的:
static func createAccount(email: String, password: String, handler: (status: ResponseStatus, user: User?) -> ())
问题在于 .Success
可能会与 nil
一起返回给用户,这不应该发生。
我希望能够强制执行如果 .Success
通过,则用户不能是 nil
。这可以做到吗?如果没有,最好的管理方法是什么?
在此先感谢您的帮助。
来自@AlexsanderAkers 和@neilkimmett 的出色回答。唯一不同的是亚历克斯比尼尔早了几分钟回答。谢谢两位!
这样的事情怎么样?
enum ResponseStatus<T> {
case Success(T)
case InvalidParameters
// other cases
}
或者您可以使用 Either
/Result
类型并且仅将枚举用于错误场景?
static func createAccount(email: String, password: String, handler: (Result<User, ResponseError>) -> Void) { ... }
的完美用例
问题:
当传入的枚举类型为 .Success
时,如何以强制传递非可选类型的方式定义函数?如果无法做到这一点,最好的建模方法是什么?
上下文:
我正在围绕我们的 API 制作基于完成处理程序的包装器。传回处理程序的参数包括提供响应状态的 enum
和 User
实例。 enum
是这样的:
enum ResponseStatus : Int {
case Success = 200
case InvalidParameters = 422
// and a few more
}
方法签名是这样的:
static func createAccount(email: String, password: String, handler: (status: ResponseStatus, user: User?) -> ())
问题在于 .Success
可能会与 nil
一起返回给用户,这不应该发生。
我希望能够强制执行如果 .Success
通过,则用户不能是 nil
。这可以做到吗?如果没有,最好的管理方法是什么?
在此先感谢您的帮助。
来自@AlexsanderAkers 和@neilkimmett 的出色回答。唯一不同的是亚历克斯比尼尔早了几分钟回答。谢谢两位!
这样的事情怎么样?
enum ResponseStatus<T> {
case Success(T)
case InvalidParameters
// other cases
}
或者您可以使用 Either
/Result
类型并且仅将枚举用于错误场景?
static func createAccount(email: String, password: String, handler: (Result<User, ResponseError>) -> Void) { ... }