实例方法
decode(_:)
开始或继续将代码单元序列解码为 Unicode 标量值。
必需的。
声明
mutating func decode<I>(_ input: inout I) -> UnicodeDecodingResult where I : IteratorProtocol, Self.CodeUnit == I.Element
返回值
UnicodeDecodingResult
实例,表示下一个 Unicode 标量、错误指示或 UTF 序列已完全解码的指示。
参数
input
要解码的代码单元的迭代器。
input
在重复调用此方法时必须是相同的迭代器实例。不要在此方法之外推进迭代器或迭代器的任何副本。
详述
要完全解码代码单元序列,请重复调用此方法,直到它返回 UnicodeDecodingResult.emptyInput
。检查迭代器是否耗尽是不够的,因为解码器可以存储来自输入迭代器的缓冲数据。
由于缓冲,不可能在迭代器中找到给定返回的Unicode.Scalar
或错误的对应位置。
以下示例将字符串的 UTF-8 编码字节解码为 Unicode.Scalar
实例数组:
let str = "✨Unicode✨"
print(Array(str.utf8))
// Prints "[226, 156, 168, 85, 110, 105, 99, 111, 100, 101, 226, 156, 168]"
var bytesIterator = str.utf8.makeIterator()
var scalars: [Unicode.Scalar] = []
var utf8Decoder = UTF8()
Decode: while true {
switch utf8Decoder.decode(&bytesIterator) {
case .scalarValue(let v): scalars.append(v)
case .emptyInput: break Decode
case .error:
print("Decoding error")
break Decode
}
}
print(scalars)
// Prints "["\u{2728}", "U", "n", "i", "c", "o", "d", "e", "\u{2728}"]"
可用版本
iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+
相关用法
- Swift UnicodeCodec encode(_:into:)用法及代码示例
- Swift Unicode.CanonicalCombiningClass ...(_:_:)用法及代码示例
- Swift Unicode.Scalar.UTF16View contains(where:)用法及代码示例
- Swift Unicode.Scalar.UTF8View dropFirst(_:)用法及代码示例
- Swift Unicode.Scalar.UTF16View firstIndex(of:)用法及代码示例
- Swift Unicode.Scalar.UTF16View randomElement()用法及代码示例
- Swift Unicode.Scalar.UTF8View contains(where:)用法及代码示例
- Swift Unicode.UTF32 encode(_:into:)用法及代码示例
- Swift Unicode.Scalar.UTF16View forEach(_:)用法及代码示例
- Swift Unicode.Scalar.UTF8View index(_:offsetBy:limitedBy:)用法及代码示例
- Swift Unicode.Scalar.UTF16View allSatisfy(_:)用法及代码示例
- Swift Unicode.Scalar.UTF8View elementsEqual(_:)用法及代码示例
- Swift Unicode.CanonicalCombiningClass ..<(_:)用法及代码示例
- Swift Unicode.Scalar.UTF16View prefix(through:)用法及代码示例
- Swift Unicode.Scalar.UTF8View split(maxSplits:omittingEmptySubsequences:whereSeparator:)用法及代码示例
- Swift Unicode.Scalar escaped(asASCII:)用法及代码示例
- Swift Unicode.Scalar.UTF16View contains(_:)用法及代码示例
- Swift Unicode.Scalar.UTF16View filter(_:)用法及代码示例
- Swift Unicode.Scalar.UTF16View split(separator:maxSplits:omittingEmptySubsequences:)用法及代码示例
- Swift Unicode.Scalar.UTF16View enumerated()用法及代码示例
- Swift Unicode.Scalar.UTF16View reduce(into:_:)用法及代码示例
- Swift Unicode.Scalar.UTF8View allSatisfy(_:)用法及代码示例
- Swift Unicode.UTF16 transcodedLength(of:decodedAs:repairingIllFormedSequences:)用法及代码示例
- Swift Unicode.UTF16 trailSurrogate(_:)用法及代码示例
- Swift Unicode.Scalar.UTF8View map(_:)用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 UnicodeCodec decode(_:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。