はじめに
PersonNameComponents
というものを知りました。
DateComponents
のように人の名前を管理できるようです。
めっちゃ便利そうなので基本的な使い方を記録しておきます。
イニシャライザはこんな感じ
本記事で登場してもらうのは、「山田ルーカス太郎3世」です。
あだ名は「タロー」です。
var personNameComponents = PersonNameComponents(
namePrefix: "Mr.", /* Mr., Mrs., Ms.など */
givenName: "太郎", /* 名前 */
middleName: "ルーカス", /* ミドルネーム */
familyName: "山田", /* 苗字 */
nameSuffix: "3世", /* Sr., Jr., I, II, IIIなど */
nickname: "タロー", /* ニックネーム */
phoneticRepresentation: nil /* 受信機の音声表現名コンポーネント。(公式ドキュメントを翻訳しただけ。何に使用するか不明) */
)
style
abbreviated
familyNameのみ
let formatter = PersonNameComponentsFormatter()
formatter.style = .abbreviated
print(formatter.string(from: personNameComponents)) // 山田
default
familyName + givenName
let formatter = PersonNameComponentsFormatter()
formatter.style = .default
print(formatter.string(from: personNameComponents)) // 山田太郎
long
namePrefix + familyName + givenName + middleName + nameSuffix
let formatter = PersonNameComponentsFormatter()
formatter.style = .long
print(formatter.string(from: personNameComponents)) // Mr. 山田太郎ルーカス 3世
medium
familyName + givenName
let formatter = PersonNameComponentsFormatter()
formatter.style = .medium
print(formatter.string(from: personNameComponents)) // 山田太郎
short
nicknameのみ
let formatter = PersonNameComponentsFormatter()
formatter.style = .short
print(formatter.string(from: personNameComponents)) // タロー
おわり
文字列で管理しているよりいいですね。
参考記事
公式ドキュメント