我是新手,我有
struct User{...}
试图从网络通话完成区退还该用户
func prof(completion: ((_ user: User?) -> ())? = nil) {
...
let user = ...//created successfully
completion?(user)
}
在我的视图控制器中
api.prof { user in
// user nil
}
请说明如何正确返回用户?
我是新手,我有
struct User{...}
试图从网络通话完成区退还该用户
func prof(completion: ((_ user: User?) -> ())? = nil) {
...
let user = ...//created successfully
completion?(user)
}
在我的视图控制器中
api.prof { user in
// user nil
}
请说明如何正确返回用户?
首先,提供一个友好的建议,以防止因关闭而造成混乱。使用类型别名可以避免函数声明中的复杂性。
typealias UserCompletion = (User?) -> Void
现在在您的函数中:
func prof(completion: UserCompletion?) {
...
completion?(user)
}
视图控制器:
api.prof { user in
if let user = user {
//do something with user
}
}
第二,为什么要让可选用户完成您的任务?理想情况下,如果用户创建失败,您将希望出错。您可以为此使用Result<User,Error>
。