Ios 将[String,String]添加到UIAlertConroller消息中,不带可选\";(帮助)“;在Swift 3.0中

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

下面是一段代码,允许我在UIAlertViewController消息中显示这两个字符串,但是警报显示的字符串周围有可选的括号,除了下面的代码,有人可以帮助/知道更好的使用方法吗,提前感谢

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行为是不可接受的