---
title: "init(validating:as:)"
framework: swift
role: symbol
role_heading: Initializer
path: "swift/string/init(validating:as:)-5cw2c"
---

# init(validating:as:)

Creates a new string by copying and validating the sequence of code units passed in, according to the specified encoding.

## Declaration

```swift
init?<Encoding>(validating codeUnits: some Sequence<Int8>, as encoding: Encoding.Type) where Encoding : _UnicodeEncoding, Encoding.CodeUnit == UInt8
```

## Parameters

- `codeUnits`: A sequence of code units that encode a String
- `encoding`: A conformer to Unicode.Encoding that can decode codeUnits as UInt8

## Discussion

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"

## See Also

### Creating a String from Unicode Data

- [init(_:)](swift/string/init(_:)-8ay23.md)
- [init(data:encoding:)](swift/string/init(data:encoding:).md)
- [init(validatingUTF8:)](swift/string/init(validatingutf8:)-208fn.md)
- [init(validating:as:)](swift/string/init(validating:as:)-84qr9.md)
- [init(utf8String:)](swift/string/init(utf8string:)-8qmaq.md)
- [init(utf8String:)](swift/string/init(utf8string:)-3mcco.md)
- [init(utf16CodeUnits:count:)](swift/string/init(utf16codeunits:count:).md)
- [init(utf16CodeUnitsNoCopy:count:freeWhenDone:)](swift/string/init(utf16codeunitsnocopy:count:freewhendone:).md)
- [init(decoding:as:)](swift/string/init(decoding:as:).md)
