gpt4 book ai didi

swift - 如何在运行时将 StaticString 转换为 String?

转载 作者:搜寻专家 更新时间:2023-10-30 22:29:22 26 4
gpt4 key购买 nike

在 Swift 3 中,以下转换是否是从 StaticString 创建 String 的正确方法?

let fileName : StaticString = #file
let currentFile : String = file.description

最佳答案

不,这不是严格StaticString 转换为 String 的正确方法; description 返回的值是一个实现细节。

获取 String 的最简单方法是不向 fileName 添加显式类型注释;因为它默认为 String:

let fileName = #file
print(type(of: fileName)) // String

但是,假设这在您的实际用例中是不可能的,另一种选择是使用 StaticStringwithUTF8Buffer(_:)方法以及 Stringinit(decoding:as:)用于解码静态字符串的 UTF-8 代码单元的初始化程序:

let fileName: StaticString = #file

let currentFile = fileName.withUTF8Buffer {
String(decoding: $0, as: UTF8.self)
}

print(currentFile)

当然,您可以为此创建自己的便利初始化程序:

extension String {

init(_ staticString: StaticString) {
self = staticString.withUTF8Buffer {
String(decoding: $0, as: UTF8.self)
}
}
}

let fileName: StaticString = #file
let currentFile = String(fileName)

print(currentFile)

但是这种转换真的不应该经常出现。

关于swift - 如何在运行时将 StaticString 转换为 String?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46397065/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com