您需要使用完成处理程序,因为用户输入是异步发生的,因此您无法使用同步返回它 return 。
return
与您的问题无关,但您应该使用字符串插值而不是 + 串起弦乐。
+
func showPopUp(name:String, genderCompletion: @escaping (String)->()) { let alert = UIAlertController(title: "What are you \(name)?", message: nil, preferredStyle: .alert) alert.addAction(UIAlertAction(title: "Boy", style: .default, handler: { action in genderCompletion("Boy") })) alert.addAction(UIAlertAction(title: "Girl", style: .default, handler: { action in genderCompletion("Girl") })) self.present(alert, animated: true) } override func viewDidLoad() { super.viewDidLoad() let characters: [String] = ["John", "Tom", "Martha"] for ch in characters{ showPopUp(name: ch, genderCompletion: { gender in print("\(ch) is a \(gender)") }) } }