Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何转换Swift Bool-&燃气轮机;一串_Swift_Casting - Fatal编程技术网

如何转换Swift Bool-&燃气轮机;一串

如何转换Swift Bool-&燃气轮机;一串,swift,casting,Swift,Casting,给定一个Bool?,我希望能够做到这一点: let a = BoolToString(optbool) ?? "<None>" a=BoolToString(optbool)??"" 这会给我“true”,“false”,或者“ 是否有内置的BoolToString var boolValue: Bool? = nil var stringValue = "\(boolValue)" // can be either "true", "false", or "nil" 或更详细

给定一个
Bool?
,我希望能够做到这一点:

let a = BoolToString(optbool) ?? "<None>"
a=BoolToString(optbool)??""
这会给我
“true”
“false”
,或者

是否有内置的
BoolToString

var boolValue: Bool? = nil
var stringValue = "\(boolValue)" // can be either "true", "false", or "nil"
或更详细的自定义函数:

func boolToString(value: Bool?) -> String {
    if let value = value {
        return "\(value)"
    }
    else { 
        return "<None>"
        // or you may return nil here. The return type would have to be String? in that case.
    }
func boolToString(值:Bool?)->String{
如果let value=value{
返回“\(值)”
}
否则{
返回“”
//或者您可以在这里返回nil。在这种情况下,返回类型必须是String?类型。
}

}

您可以使用
?:
三元运算符:

let a = optBool == nil ? "<None>" : "\(optBool!)"
其中,
optBool.map{“\($0)”}
正是您希望
BoolToString
做的事情;它返回一个
字符串?
,该字符串是
可选(true)
可选(false)
,或
nil
。然后,nil合并运算符
将其展开,或将
nil
替换为

更新:

这也可以写成:

let a = optBool.map(String.init) ?? "<None>"
让a=optBool.map(String.init)??""
或:

let a=optBool.map{String($0)}??""
或者你可以定义“一条直线”,它同时适用于Bool和Bool?作为一项功能

func BoolToString(b: Bool?)->String { return b?.description ?? "<None>"}
func BoolToString(b:Bool?)->String{return b?.description???“”
字符串(Bool)是最简单的方法

var myBool = true
var boolAsString = String(myBool)

你可以用扩展来做

extension Optional where Wrapped == Bool {
  func toString(_ nilString: String = "nil") -> String {
    self.map { String($0) } ?? nilString
  }
}
用法:

let b1: Bool? = true
let b2: Bool? = false
let b3: Bool? = nil

b1.toString() // "true"
b2.toString() // "false"

b3.toString() // "nil"
b3.toString("<None>") // "<None>"
让b1:Bool?=真的
让b2:Bool?=假的
让b3:Bool?=无
b1.toString()/“true”
b2.toString()/“false”
b3.toString()/“nil”
b3.toString(“”/“”)

您希望真、假和为字符串吗?@Dannybes抱歉,错过了。是的,那么,不是吗?没有内置方式?将
的“无”更改为
”。我想我们这里有赢家了!:-)这太完美了。谢谢
var myBool = true
var boolAsString = String(myBool)
let trueString = String(true) //"true"
let trueBool = Bool("true")   //true
let falseBool = Bool("false") //false
let nilBool = Bool("foo")     //nil
extension Optional where Wrapped == Bool {
  func toString(_ nilString: String = "nil") -> String {
    self.map { String($0) } ?? nilString
  }
}
let b1: Bool? = true
let b2: Bool? = false
let b3: Bool? = nil

b1.toString() // "true"
b2.toString() // "false"

b3.toString() // "nil"
b3.toString("<None>") // "<None>"