【发布时间】:2015-07-02 16:21:10
【问题描述】:
问题:
当传入的枚举类型为.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 都给出了很好的答案。唯一将他们分开的是亚历克斯在尼尔之前就回答了。谢谢两位!
【问题讨论】:
标签: ios swift enums completionhandler