Ios 将[String,String]添加到UIAlertConroller消息中,不带可选\";(帮助)“;在Swift 3.0中
下面是一段代码,允许我在UIAlertViewController消息中显示这两个字符串,但是警报显示的字符串周围有可选的括号,除了下面的代码,有人可以帮助/知道更好的使用方法吗,提前感谢Ios 将[String,String]添加到UIAlertConroller消息中,不带可选\";(帮助)“;在Swift 3.0中,ios,swift,string,uialertcontroller,Ios,Swift,String,Uialertcontroller,下面是一段代码,允许我在UIAlertViewController消息中显示这两个字符串,但是警报显示的字符串周围有可选的括号,除了下面的代码,有人可以帮助/知道更好的使用方法吗,提前感谢 var show = [(String,String)]() show.append(("our-Show", (OurUpdate?.theVersion)!)) show.append(("the-Show", (TheUpdate?.theVersion)!)) let alert = UIAler
var show = [(String,String)]()
show.append(("our-Show", (OurUpdate?.theVersion)!))
show.append(("the-Show", (TheUpdate?.theVersion)!))
let alert = UIAlertController(title: "Updated", message:"\(show)", preferredStyle: UIAlertControllerStyle.alert)
self.present(alert, animated: true, completion: nil)
let delay = 5.0 * Double(NSEC_PER_SEC)
let time = DispatchTime.now() + Double(Int64(delay)) / Double(NSEC_PER_SEC)
DispatchQueue.main.asyncAfter(deadline: time, execute: {
self.dismiss(animated: true, completion: { _ in })
})
使用let语法比使用强制展开更好。以下代码可能对您有所帮助:
if let ou = OurUpdate?.theVersion
{
show.append(("our-Show", ou))
}
else
{
show.append(("our-Show", "Error handling message!"))
}
使用let语法比使用强制展开更好。以下代码可能对您有所帮助:
if let ou = OurUpdate?.theVersion
{
show.append(("our-Show", ou))
}
else
{
show.append(("our-Show", "Error handling message!"))
}
问题是您正在使用字符串插值将元组数组转换为字符串。这就是添加方括号、引号和括号的内容。除了基本类型和其他字符串之外,对任何东西使用字符串插值都不是一个好主意 因此,第一步是正确地将元组数组转换为实际需要的格式的字符串 这里有一个方法:
let showStr = show.map { "\($0.0): \($0.1)" }.joined(separator: ", ")
let alert = UIAlertController(title: "Updated", message: showStr, preferredStyle: UIAlertControllerStyle.alert)
这将提供以下输出:
我们的节目:1-5,节目:1-6
这里使用map
将元组数组转换为字符串数组,其中每个字符串组合元组中的两个字符串,并用冒号分隔它们。然后,joined
调用将新的字符串数组组合成最后一个字符串,每个字符串用逗号分隔
当然,您可以根据自己的意愿更改其格式
作为旁注,以下代码是危险的:
show.append(("the-Show", (TheUpdate?.theVersion)!))
如果更新为nil
,此代码将崩溃。您确实需要避免强制展开,尤其是与可选链接相结合时。更安全的方法是:
show.append(("the-Show", TheUpdate?.theVersion ?? "Some Default"))
其中,“某些默认值”
应替换为在情况下要使用的任何值更新为nil
问题在于,您正在使用字符串插值将元组数组转换为字符串。这就是添加方括号、引号和括号的内容。除了基本类型和其他字符串之外,对任何东西使用字符串插值都不是一个好主意
因此,第一步是正确地将元组数组转换为实际需要的格式的字符串
这里有一个方法:
let showStr = show.map { "\($0.0): \($0.1)" }.joined(separator: ", ")
let alert = UIAlertController(title: "Updated", message: showStr, preferredStyle: UIAlertControllerStyle.alert)
这将提供以下输出:
我们的节目:1-5,节目:1-6
这里使用map
将元组数组转换为字符串数组,其中每个字符串组合元组中的两个字符串,并用冒号分隔它们。然后,joined
调用将新的字符串数组组合成最后一个字符串,每个字符串用逗号分隔
当然,您可以根据自己的意愿更改其格式
作为旁注,以下代码是危险的:
show.append(("the-Show", (TheUpdate?.theVersion)!))
如果更新为nil
,此代码将崩溃。您确实需要避免强制展开,尤其是与可选链接相结合时。更安全的方法是:
show.append(("the-Show", TheUpdate?.theVersion ?? "Some Default"))
其中,“某些默认值”
应替换为您在中使用的任何值。如果更新为nil
,是否打印元组数组?message是可选字符串您应该将什么显示为消息?“我们的秀”/“秀”?嘿,伙计们,我更新了警报的屏幕截图,只是想不显示任何括号,老实说,你是怎么想的?正如我之前所说的,你正在打印整个元组数组:你可以使用show[0]访问“我们的秀”。0
,“1-5”使用show[0]。1
,“秀”使用show[1]。0
,等等。不管怎样,我不知道你到底在做什么,所以要想帮助你并不容易。对不起,是的,元组数组,谢谢你的帮助。你正在打印元组数组吗?message是可选字符串您应该将什么显示为消息?“我们的秀”/“秀”?嘿,伙计们,我更新了警报的屏幕截图,只是想不显示任何括号,老实说,你是怎么想的?正如我之前所说的,你正在打印整个元组数组:你可以使用show[0]访问“我们的秀”。0
,“1-5”使用show[0]。1
,“秀”使用show[1]。0
,等等。总之,我不知道你到底在做什么,所以想帮你并不容易。对不起,元组数组,谢谢你的帮助。零合并很有用,但我发现自己通过传递空字符串来扭曲它,只是因为在某些情况下派生的UX行为不可接受IL合并是有用的,但我发现自己通过传递空字符串来扭曲它,只是因为在某些情况下派生的UX行为是不可接受的