【发布时间】:2021-10-02 02:21:05
【问题描述】:
我现在正在开发一个 Swift 项目,并且在开发应用程序的同时学习该语言。我正在尝试创建一个函数来调用“警报弹出窗口”并有一个关于可选展开的问题。
func showAlert(title: String?, message: String?, actions: [UIAlertAction], style: UIAlertController.Style) {
let title = title ?? nil
let message = message ?? nil
print("alert \(title), \(message),") // get optional value or nil, not String and nil...
let alert = UIAlertController(title: title, message: message, preferredStyle: style)
actions.forEach { alert.addAction($0)}
present(alert, animated: true)
}
由于我需要在应用程序中显示几个警报弹出窗口,我创建了一个自定义函数“showAlert”,我想像下面的代码一样调用这个函数。
showAlert(title: "delete", message: nil, actions: [deleteAction], style: .alert)
问题是标题和消息值可以是字符串或 nil(例如...警报控制器只显示标题但消息),所以我需要澄清标题和消息是否包含值。
我在这里要做的是,检查标题和消息值,并将 String 或 nil 应用到这部分,let alert = UIAlertController(title: title, message: message, preferredStyle: style)。
我阅读了一些关于可选绑定的文章,但是如果我使用它编写此代码,
func showAlert(title: String?, message: String?, actions: [UIAlertAction], style: UIAlertController.Style) {
if let title = title, let message = message {
print("alert \(title), \(message),") // get optional value
let alert = UIAlertController(title: title, message: message, preferredStyle: style)
actions.forEach { alert.addAction($0)}
present(alert, animated: true)
}
}
我只能处理title为String,message为String的情况。 我也想关心标题为 nil 但消息为字符串,或标题为字符串而消息为 nil 的情况。
那么我如何编写在 showAlert 的标题和消息中采用 String 或 nil 的代码,并在这部分应用 String 或 nil,UIAlertController(title: title, message: message, preferredStyle: style)?
【问题讨论】:
-
刚刚发现 UI 警报控制器对标题和消息都采用可选值,所以可能我不需要解开这个... UIAlertController(title: String?, message: String?,首选样式:UIAlertController.Style)
标签: ios swift alert optional optional-parameters