SwiftのStringをutf8でエンコーディングするときオプショナルにしない
文字列からデータに変換するときオプショナルになる
StringProtocol
に
func data(using encoding: String.Encoding, allowLossyConversion: Bool = false) -> Data?
というメソッドが定義されており、String
からData
に変換できるようになっている。この変換は第一引数で指定したエンコーディングで行われ、変換できない文字が含まれている場合にnil
が返される。
UTF8で変換すればオプショナルにならない
Swift 5 以降では、Stringは内部データをUTF8で保持していて、var utf8: Self.UTF8View { get }
で参照できる。
そのため、UTF8でエンコーディングするときは下記のコードでオプショナルにせずにData
に変換できる。
let string: String = "string"
let data: Data = Data(string.utf8)
内部の実装でもString.data(using:)
に.utf8
を渡したときはData(self.utf8)
が呼ばれている。