将String转换为StaticString

时间:2017-03-23 10:41:49

标签: swift string

Swift 3.0中是否有办法从StaticString类型中获取String类型,这种类型很复杂?

示例(需要转换才能工作):

let aString: StaticString = "One part" + "Second part"

3 个答案:

答案 0 :(得分:5)

这是不可能的,因为StaticString被定义为

  

一个简单的字符串,用于表示“可知的文本”   编译时“。(Reference

字符串连接在运行时发生。

我不知道你要做什么,但你可以这样做:

func aMethod(i: Int) -> StaticString {
    switch i {
    case 0:
        return "Simple"
    case 1:
        return "Complex"
    default:
        return "Default"
    }
}
let result = aMethod(i: 1)
print("\(type(of: result)): \(result)") // prints "StaticString: Complex"

答案 1 :(得分:3)

根据您的实际用例,您可能有一些解决方法。例如,如果您要使用os_log,如果要使用Swift %@而不是String,可以使用CVarArg

//os_log("Compiler error with: \(string).", log: log)
os_log("This is OK: %@.", log: log, string)

答案 2 :(得分:1)

您可以使用格式说明符,例如%d%s 例如:

os_log("Successfully fetched %d recordings.", type: .info, count)
os_log("Getting recordings from %s.",
  type: .info, url.absoluteString)

有关更多信息,check here