初始化器
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:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。