Objective-CとSwiftでUUID文字列を生成する、バージョン別の書き方

  • Swift
  • Objective-C
  • UUID

この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。

Objective-Cの場合

NSString *uuid = [[NSUUID UUID] UUIDString];

これは今も変わらず正しい書き方。

Swiftの場合

Swiftはバージョンによって書き方が違う。

Swift 2以前

let uuid: NSString = NSUUID().UUIDString

当時はObjective-CのAPIをほぼそのままブリッジしていたので、クラス名はNSUUID、メソッド名も大文字始まりのUUIDStringだった。戻り値もNSString。

Swift 3以降

let uuid = UUID().uuidString

Swift 3(2016年9月リリース)でSwift API Design Guidelinesが適用されて、以下が変わった。

  • NSUUID → UUID(Foundationの値型に統一された)
  • UUIDString → uuidString(メソッド名が小文字始まりになった)
  • 戻り値も素直なString型になったので、NSStringへのキャストが不要になった

2018年8月時点で使うSwiftはだいたい4.1〜4.2あたりなので、NSUUID().UUIDStringはもう2年近く前の書き方。これで書くとコンパイルエラーになる。