あぶないDataプログラミング by 大庭 慎一郎

iOSDC Japan 2024
採択
2024/08/24 15:50〜
Track A
LT(5分)

あぶないDataプログラミング

ooba 大庭 慎一郎 ooba

SwiftのData型はバイナリデータを扱うための型です。
RandomAccessCollectionなどの便利なプロトコルに準拠しているおかげで、気軽にバイナリデータの読み書きができます。

でも「ほぼUInt8の配列でしょ」と思っているとそんなことはなく、Data型にしかない、面白くも「あぶない」特徴がいくつかあります。
それらを知らないとプログラムをクラッシュさせてしまうこともしばしば。

コードレビューでこの関数をLGTMしてしまいそうになったら、ぜひこのトークを聴いてください。

func getUInt32(from data: Data) -> UInt32 {
 switch data.count {
 case 0:
  return 0
 case 1:
  return UInt32(data[0])
 case 2, 3:
  return UInt32(data[1]) * 256 + UInt32(data[0])
 default:
  return data.withUnsafeBytes { $0.load(as: UInt32.self) }
 }
}