struct
UTF32
Inheritance |
UnicodeCodec
View Protocol Hierarchy β
|
---|---|
Associated Types |
A type that can hold code unit values for this encoding. |
Import |
|
Initializers
Creates an instance of the UTF-32 codec.
Declaration
init
()
Static Methods
Encodes a Unicode scalar as a UTF-32 code unit by calling the given closure.
For example, like every Unicode scalar, the musical fermata symbol ("π") can be represented in UTF-32 as a single code unit. The following code encodes a fermata in UTF-32:
var
codeUnit
:
UTF32
.
CodeUnit
=
0
UTF32.encode
(
"π"
,
into
: {
codeUnit
= $
0
})
(
codeUnit
)
// Prints "119056"
Parameters: input: The Unicode scalar value to encode. processCodeUnit: A closure that processes one code unit argument at a time.
Declaration
static
func
encode
(
_
input
:
UnicodeScalar
,
into
processCodeUnit
: (
UTF32
.
CodeUnit
) -
>
Swift
.
Void
)
Instance Methods
Starts or continues decoding a UTF-32 sequence.
To decode a code unit sequence completely, call this method repeatedly
until it returns UnicodeDecodingResult.emptyInput
. Checking that the
iterator was exhausted is not sufficient, because the decoder can store
buffered data from the input iterator.
Because of buffering, it is impossible to find the corresponding position
in the iterator for a given returned UnicodeScalar
or an error.
The following example decodes the UTF-16 encoded bytes of a string
into an array of UnicodeScalar
instances. This is a demonstration
only---if you need the Unicode scalar representation of a string, use
its unicodeScalars
view.
// UTF-32 representation of "β¨Unicodeβ¨"
let
codeUnits
: [
UTF32
.
CodeUnit
] =
[
10024
,
85
,
110
,
105
,
99
,
111
,
100
,
101
,
10024
]
var
codeUnitIterator
=
codeUnits
.
makeIterator
()
var
scalars
: [
UnicodeScalar
] = []
var
utf32Decoder
=
UTF32
()
Decode
:
while
true
{
switch
utf32Decoder
.
decode
(
&
codeUnitIterator
) {
case
.
scalarValue
(
let
v
):
scalars
.
append
(
v
)
case
.
emptyInput
:
break
Decode
case
.
error
:
(
"Decoding error"
)
break
Decode
}
}
(
scalars
)
// Prints "["\u{2728}", "U", "n", "i", "c", "o", "d", "e", "\u{2728}"]"
input
: An iterator of code units to be decoded. input
must be
the same iterator instance in repeated calls to this method. Do not
advance the iterator or any copies of the iterator outside this
method.
Returns: A UnicodeDecodingResult
instance, representing the next
Unicode scalar, an indication of an error, or an indication that the
UTF sequence has been fully decoded.
Declaration
mutating
func
decode
<
I
:
IteratorProtocol
where
I
.
Element
==
CodeUnit
>
(
_
input
:
inout
I
) -
>
UnicodeDecodingResult
A codec for translating between Unicode scalar values and UTF-32 code units.