web-dev-qa-db-ja.com

UTF-8エンコーディングを使用した文字列からデータへの変換が失敗することはありますか?

SwiftでStringインスタンスをDataインスタンスに変換するには、data(using:allowLossyConversion:)を使用できます。これにより、オプションのDataインスタンス。

エンコーディングがUTF-8の場合、この関数の戻り値はnilになる可能性があります(String.Encoding.utf8)?

戻り値をnilにできない場合は、そのような変換を常に強制的にアンラップするのが安全です。

9
Max

UTF-8はすべての有効なUnicodeコードポイントを表すことができるため、Swift文字列からUTF-8データへの変換は失敗しません。

強制アンラップイン

let string = "some string .."
let data = string.data(using: .utf8)!

安全です。

同じことが.utf16または.utf32にも当てはまりますが、.asciiまたは.isoLatin1などの制限された文字セットのみを表すエンコーディングには当てはまりません。

または、文字列の.utf8ビューを使用して、UTF-8データを作成し、強制的なアンラップを回避することもできます。

let string = "some string .."
let data = Data(string.utf8)
21
Martin R