奥拉,
我不需要使用Swift语言。我想在String中打印一些变量,其中一些是可选的。
func onRegPin(timeOut: Int64, pin: String?)->()
{
String(format: "Timeout: %d Pin: %@", timeOut, pin!)
}
如果引脚在运行时为零,我会得到一些断言或其他东西。
有没有办法使用String打印这个可选参数?
答案 0 :(得分:3)
你可以这样做:
如果array(3) {
[0]=>
array(4) {
["sort"]=>
string(0) ""
["day"]=>
string(2) "2"
["month"]=>
string(1) "8"
["year"]=>
string(4) "2015"
}
[1]=>
array(4) {
["sort"]=>
string(0) ""
["day"]=>
string(1) "5"
["month"]=>
string(1) "8"
["year"]=>
string(4) "2015"
}
[2]=>
array(4) {
["sort"]=>
string(0) ""
["day"]=>
string(1) "9"
["month"]=>
string(1) "8"
["year"]=>
string(4) "2015"
}
[3]=>
array(4) {
["sort"]=>
string(0) ""
["day"]=>
string(2) "3"
["month"]=>
string(1) "8"
["year"]=>
string(4) "2015"
}
[4]=>
array(4) {
["sort"]=>
string(0) ""
["day"]=>
string(1) "6"
["month"]=>
string(1) "8"
["year"]=>
string(4) "2015"
}
[5]=>
array(4) {
["sort"]=>
string(0) ""
["day"]=>
string(1) "10"
["month"]=>
string(1) "8"
["year"]=>
string(4) "2015"
}
}
为pinValue
,则pin
为空字符串,否则为nil
值
pin
答案 1 :(得分:1)
func onRegPin(timeOut: Int64, pin: String?)->()
{ if let pin = pin{
String(format: "Timeout: %d Pin: %@", timeOut, pin)
}else{
String(format: "Timeout: %d No Pin ", timeOut)
}
}
更新:使用默认参数
func onRegPin(timeOut: Int64, pin:String?="No pin"){
String(format: "Timeout: %d Pin: %@", timeOut, pin!)
}
如果pin只有timeOut
onRegPin(3423)
否则如果pin不是nil:
onRegPin(3423, pin:"Pin")
答案 2 :(得分:1)
您需要的是在使用之前打开Optional。 Swift 1.2中的标准方式是使用if let
(还有" nil合并"就像@ vadian'答案一样)。
看起来你的函数应该返回一个String,在我的例子中它是一个Optional,因为它可能会失败:
func onRegPin(timeOut: Int64, pin: String?) -> String? {
if let pinOK = pin {
return String(format: "Timeout: %d Pin: %@", timeOut, pinOK)
}
return nil
}
if let regpin = onRegPin(30, "test") {
println(regpin) // prints "Timeout: 30 Pin: test"
}
使用Swift 2(Xcode 7)可能是:
func onRegPin(timeOut: Int64, pin: String?) -> String? {
guard let pinOK = pin else { return nil }
return String(format: "Timeout: %d Pin: %@", timeOut, pinOK)
}
if let regpin = onRegPin(30, pin: "test") {
print(regpin)
}
答案 3 :(得分:1)
好想的是不检查" pin"或者为铸造引入新的var,还有另一种解决方案,如println:
字符串(格式:"超时:%d引脚:%@",timeOut," \(引脚)")