Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在Swift中返回非可选的.Success枚举_Ios_Swift_Enums_Completionhandler - Fatal编程技术网

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