はじめに
Localizable.stirngs
を使って、文字列のハードコーディングを避けていた。
URL: 【Swift】Localizable.stringsを使った文字列のハードコーディング対策
しかし、自動補完が効かないデメリットがある。
この記事では、R.swift
を使った場合の文字列のハードコーディング対策の実装を備忘録として、記録する
実装比較
Localizable.strings
の場合
Localizable.strings
"ArticleTitle" = "記事タイトル";
"ArticleAuthor" = "kasiwa";
"ArticleBody" = "記事本文記事本文記事本文記事本文記事本文記事本文記事本文";
"ArticleCreatedAt" = "2023/05/06";
ViewController
import UIKit
final class ViewController: UIViewController {
@IBOutlet private var articleTitle: UILabel!
@IBOutlet private var articleCreatedAt: UILabel!
@IBOutlet private var articleBody: UILabel!
@IBOutlet private var articleAuthor: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
articleTitle.text = NSLocalizedString("ArticleTitle", comment: "")
articleCreatedAt.text = NSLocalizedString("ArticleCreatedAt", comment: "")
articleBody.text = NSLocalizedString("ArticleBody", comment: "")
articleAuthor.text = NSLocalizedString("ArticleAuthor", comment: "")
}
}
Localizable.strings
+R.swift
の場合
ViewController.swift
import UIKit
final class ViewController: UIViewController {
@IBOutlet private var articleTitle: UILabel!
@IBOutlet private var articleCreatedAt: UILabel!
@IBOutlet private var articleBody: UILabel!
@IBOutlet private var articleAuthor: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
articleTitle.text = R.string.localizable.articleTitle()
articleCreatedAt.text = R.string.localizable.articleCreatedAt()
articleBody.text = R.string.localizable.articleBody()
articleAuthor.text = R.string.localizable.articleAuthor()
}
}
プレビュー
終わりに
R.swift
を活用すれば、文字列の指定ミスによるクラッシュがなくなるので、開発を効率化できる。
個人的に、書きやすさもR.swift
を使った方が楽。
StoryBoard, Cellも文字列と同様に、自動補完が効くので、積極的にR.swift
を使っていきたい。