Edited at

iOSで識別子を作りたいとき Swift,Objective-C

More than 3 years have passed since last update.

知ってる人は知っている。知らない人は知らない。そういうこと、いっぱいあります。

さてiOSである程度開発になれてきてデータ管理にCoreDataなどを使おうとして、データ定義をしているとモデルを管理する識別子、IDが欲しくなってきます。というかだいたい必要なんじゃないかと思います。

データの名前で管理しようとしたり(2年前の俺)、日付を秒数まで文字列で取得してID代わりに使ってみようとしたり(1年半前の俺)と、知っておくべきことを知らないでいると「何を言っているか分からねーと思うが、、、」な実装をしてしまいます。

先人たちはUUIDという便利なものを用意してくれてCocoaにもしっかりと用意されているので、iOS、Objective-C、Swiftで識別子を作りたいときはこれを使いましょう

Objective-Cで書くと、こう。

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

Swiftで書くと、こう。

let uuid: NSString = NSUUID().UUIDString

XcodeのSnippetとかに登録しておくと便利です。

ちなみにモデルの識別子のプロパティ名をidとかObjective-Cでやるのはナンセンスなのでidentifierとかにしましょう。

ターミナルからはuuidgen

$ uuidgen

別に日付と時間からでも生成できないことはないけど、NSUUIDなら一行で済むからそんな無茶しなくていいと思います。