init(validating:as:)
Creates a new string by copying and validating the sequence of code units passed in, according to the specified encoding.
Declaration
init?<Encoding>(validating codeUnits: some Sequence<Int8>, as encoding: Encoding.Type) where Encoding : _UnicodeEncoding, Encoding.CodeUnit == UInt8Parameters
- codeUnits:
A sequence of code units that encode a
String - encoding:
A conformer to
Unicode.Encodingthat can decodecodeUnitsasUInt8
Discussion
This initializer does not try to repair ill-formed code unit sequences. If any are found, the result of the initializer is nil.
The following example calls this initializer with the contents of two different arrays—first with a well-formed UTF-8 code unit sequence and then with an ill-formed ASCII code unit sequence.
let validUTF8: [Int8] = [67, 97, 0, 102, -61, -87]
let valid = String(validating: validUTF8, as: UTF8.self)
print(valid ?? "nil")
// Prints "Café"
let invalidASCII: [Int8] = [67, 97, -5]
let invalid = String(validating: invalidASCII, as: Unicode.ASCII.self)
print(invalid ?? "nil")
// Prints "nil"