Ios 在Swift中返回非可选的.Success枚举
问题: 当同时传入的枚举的类型为Ios 在Swift中返回非可选的.Success枚举,ios,swift,enums,completionhandler,Ios,Swift,Enums,Completionhandler,问题: 当同时传入的枚举的类型为。Success时,如何定义一个强制传入非可选类型的函数?如果不能做到这一点,那么最好的建模方法是什么 背景: 我正在围绕我们的API制作基于完成处理程序的包装器。传回处理程序的参数包括给出响应状态的enum和User实例。enum如下所示: enum ResponseStatus : Int { case Success = 200 case InvalidParameters = 422
。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?) -> ())
方法签名如下所示:
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
。这能做到吗?如果没有,最好的管理方法是什么
提前谢谢你的帮助
来自@Alexanderakers和@neilkimmett的精彩回答。唯一能让他们分开的是亚历克斯在尼尔之前回答的问题。谢谢你们 像这样的东西怎么样
enum ResponseStatus<T> {
case Success(T)
case InvalidParameters
// other cases
}
像这样的怎么样
enum ResponseStatus<T> {
case Success(T)
case InvalidParameters
// other cases
}
似乎是的完美用例似乎是的完美用例你真的是指结果吗?你是说
响应状态
?你真的是指结果
?你是说ResponseStatus
?