Swift 3.0中是否有办法从StaticString
类型中获取String
类型,这种类型很复杂?
示例(需要转换才能工作):
let aString: StaticString = "One part" + "Second part"
答案 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