首页 > 解决方案 > 我无法理解结果为什么要添加斜线?如何删除它?

问题描述

我对以下扩展有疑问。

该扩展将任何可选值转换为字符串。像 long、Int、Float 和可选字符串。

当我尝试转换文本时

“不包含”

它自动添加的可选值

\

在单引号中。

我得到结果

不包含

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

       return ""
     }
 }

这是 playGround 示例。

示例 1

示例 2

如何删除结果中的“\”。

标签: iosswiftswift-playground

解决方案


当您调用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!)" : ""
    }
}

推荐阅读