我不明白结果为什么要加上斜杠?如何删除?

时间:2018-08-11 07:08:51

标签: ios swift swift-playground

我对以下扩展名有疑问。

该扩展名会将所有可选值转换为字符串。像long,Int,Float和可选字符串一样。

当我尝试转换

之类的文本时
  

“不包含”

自动添加的可选值

  

\

用单引号引起来。

我得到结果

  

不包含

 extension Optional where Wrapped == AnyObject{
    func toString() -> String{
       if let value = self{
          return "\(value)"
       }

       return ""
     }
 }

这是playGround示例。

Example 1

Example 2

如何在结果中删除该“ \”。

1 个答案:

答案 0 :(得分:-1)

当您在可选的description上调用String方法时,将显示\,这是将字符串传递给print时隐式发生的情况。只是为了说明字符串中有一个文字',并且'不是分隔符。

如果我使用

extension Optional {
    func toString() -> String{
       if let value = self{
          return "\(value)"
       }

       return ""
     }
 }

 let x: String? = "doesn't contain"
 print(x.toString())

它给了我

  

不包含

没有\

我可能会将其编码为计算变量

extension Optional {    
    var stringValue: String {
        return self != nil ? "\(self!)" : ""
    }
}