初始化器
init(unsafe
init(unsafeUninitializedCapacity:initializingUTF8With:)
以 UTF-8 代码单元创建具有指定容量的新字符串,然后使用覆盖字符串未初始化内存的缓冲区调用给定闭包。
声明
init(
unsafeUninitializedCapacity capacity: Int,
initializingUTF8With initializer: (UnsafeMutableBufferPointer<UInt8>) throws -> Int
) rethrows
参数
capacity
为字符串分配的 UTF-8 代码单元的内存数量(不包括空终止符)。
initializer
一个闭包,它接受一个覆盖未初始化内存的缓冲区,并为
capacity
UTF-8 代码单元提供空间,初始化该内存,并返回已初始化元素的数量。
详述
闭包应返回已初始化代码单元的数量,如果无法初始化缓冲区(例如,如果请求的容量太小),则返回 0。
此方法用 Unicode 替换字符 ("\u{FFFD}"
) 替换 ill-formed UTF-8 序列。这可能需要调整缓冲区的大小,使其超出其原始容量。
以下示例将此初始化程序与两个不同 UInt8
数组的内容一起使用——第一个具有格式良好的 UTF-8 代码单元序列,第二个在末尾具有 ill-formed 序列。
let validUTF8: [UInt8] = [0x43, 0x61, 0x66, 0xC3, 0xA9]
let invalidUTF8: [UInt8] = [0x43, 0x61, 0x66, 0xC3]
let cafe1 = String(unsafeUninitializedCapacity: validUTF8.count) {
_ = $0.initialize(from: validUTF8)
return validUTF8.count
}
// cafe1 == "Café"
let cafe2 = String(unsafeUninitializedCapacity: invalidUTF8.count) {
_ = $0.initialize(from: invalidUTF8)
return invalidUTF8.count
}
// cafe2 == "Caf�"
let empty = String(unsafeUninitializedCapacity: 16) { _ in
// Can't initialize the buffer (e.g. the capacity is too small).
return 0
}
// empty == ""
可用版本
iOS 14.0+, iPadOS 14.0+, macOS 11.0+, Mac Catalyst 14.0+, tvOS 14.0+, watchOS 7.0+
相关用法
- Swift String init()用法及代码示例
- Swift String init(_:radix:uppercase:)用法及代码示例
- Swift String init(cString:)用法及代码示例
- Swift String init(reflecting:)用法及代码示例
- Swift String init(stringLiteral:)用法及代码示例
- Swift String init(describing:)用法及代码示例
- Swift String init(repeating:count:)用法及代码示例
- Swift String init(validatingUTF8:)用法及代码示例
- Swift String init(stringInterpolation:)用法及代码示例
- Swift String init(_:)用法及代码示例
- Swift String insert(contentsOf:at:)用法及代码示例
- Swift String index(_:offsetBy:limitedBy:)用法及代码示例
- Swift String index(_:offsetBy:)用法及代码示例
- Swift String indices用法及代码示例
- Swift String insert(_:at:)用法及代码示例
- Swift String isEmpty用法及代码示例
- Swift String suffix(from:)用法及代码示例
- Swift String removeAll(where:)用法及代码示例
- Swift String ...(_:_:)用法及代码示例
- Swift String last用法及代码示例
- Swift String contains(where:)用法及代码示例
- Swift String prefix(through:)用法及代码示例
- Swift String contains(_:)用法及代码示例
- Swift String firstIndex(where:)用法及代码示例
- Swift String first用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 String init(unsafeUninitializedCapacity:initializingUTF8With:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。