函数
transcode(_:
transcode(_:from:to:stoppingOnError:into:)
通过调用给定的闭包将给定的输入从一种 Unicode 编码转换为另一种。
声明
func transcode<Input, InputEncoding, OutputEncoding>(
_ input: Input,
from inputEncoding: InputEncoding.Type,
to outputEncoding: OutputEncoding.Type,
stoppingOnError stopOnError: Bool,
into processCodeUnit: (OutputEncoding.CodeUnit) -> Void
) -> Bool where Input : IteratorProtocol, InputEncoding : _UnicodeEncoding, OutputEncoding : _UnicodeEncoding, Input.Element == InputEncoding.CodeUnit
返回值
true
如果翻译检测到 input
中的编码错误;否则,false
。
参数
input
要翻译的代码单元的迭代器,编码为
inputEncoding
。如果stopOnError
是false
,则整个迭代器将被耗尽。否则,如果检测到编码错误,迭代将停止。inputEncoding
input
的 Unicode 编码。outputEncoding
目标 Unicode 编码。
stopOnError
当在
input
中检测到编码错误时,传递true
以停止翻译。否则,将为每个检测到的错误插入一个 Unicode 替换字符 ("\u{FFFD}"
)。processCodeUnit
一次处理一个
outputEncoding
代码单元的闭包。
详述
以下示例将字符串 "Fermata 𝄐"
的 UTF-8 表示形式转码为 UTF-32。
let fermata = "Fermata 𝄐"
let bytes = fermata.utf8
print(Array(bytes))
// Prints "[70, 101, 114, 109, 97, 116, 97, 32, 240, 157, 132, 144]"
var codeUnits: [UTF32.CodeUnit] = []
let sink = { codeUnits.append($0) }
transcode(bytes.makeIterator(), from: UTF8.self, to: UTF32.self,
stoppingOnError: false, into: sink)
print(codeUnits)
// Prints "[70, 101, 114, 109, 97, 116, 97, 32, 119056]"
sink
闭包在函数迭代其输入时使用每个生成的 UTF-32 代码单元调用。
可用版本
iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+
相关用法
- Swift type(of:)用法及代码示例
- Swift KeyValuePairs flatMap(_:)用法及代码示例
- Swift String.UTF8View first用法及代码示例
- Swift Result.Publisher zip(_:_:_:)用法及代码示例
- Swift Optional.Publisher reduce(_:_:)用法及代码示例
- Swift Int8 ~(_:)用法及代码示例
- Swift SetAlgebra isStrictSubset(of:)用法及代码示例
- Swift UInt +(_:)用法及代码示例
- Swift Array enumerated()用法及代码示例
- Swift FlattenSequence prefix(_:)用法及代码示例
- Swift Slice endIndex用法及代码示例
- Swift LazySequence split(maxSplits:omittingEmptySubsequences:whereSeparator:)用法及代码示例
- Swift MutableCollection partition(by:)用法及代码示例
- Swift ReversedCollection min(by:)用法及代码示例
- Swift RandomNumberGenerator用法及代码示例
- Swift Dictionary.Keys shuffled()用法及代码示例
- Swift AnySequence elementsEqual(_:)用法及代码示例
- Swift UInt &<<(_:_:)用法及代码示例
- Swift Optional.Publisher tryDrop(while:)用法及代码示例
- Swift DefaultIndices endIndex用法及代码示例
- Swift Substring.UnicodeScalarView insert(contentsOf:at:)用法及代码示例
- Swift LazyFilterSequence dropFirst(_:)用法及代码示例
- Swift LazySequence suffix(from:)用法及代码示例
- Swift ArraySlice starts(with:)用法及代码示例
- Swift Int16.Words max()用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 transcode(_:from:to:stoppingOnError:into:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。