快速完成块中的快速传递结构

我是新手,我有

struct User{...}

试图从网络通话完成区退还该用户

func prof(completion: ((_ user: User?) -> ())? = nil) {
  ...
  let user = ...//created successfully
  completion?(user)
}

在我的视图控制器中

    api.prof { user in
    // user nil
    }

请说明如何正确返回用户?

purezheng 回答:快速完成块中的快速传递结构

首先,提供一个友好的建议,以防止因关闭而造成混乱。使用类型别名可以避免函数声明中的复杂性。

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>

本文链接:https://www.f2er.com/3146342.html

大家都在问