現在iOSアプリの開発を行っております。
入力フォームがある画面で入力された文字のバリデーションチェックを行っているのですが、そこで表示されるエラーメッセージ(または登録が成功した旨のメッセージなど)を一つのファイルに纏めて定義しておき、いろいろな場所から参照できるようにしたいのですが、どのように実装するのが良いのでしょうか?
元々webメインでやっていたのでrailsなどでは多言語化で使われるi18nを使ってymlに定義された文字列を取得するのがよく使われるやり方かと思うのですが、iOSアプリ開発ではどうするのが良いのでしょう?
現在は下記のように直接メッセージを記載してしまっています。
ちなみにRxSwift,ReSwiftを利用しており下記はviewmodelに記載されています(これからmodelに移していきます)。
func emailValid() -> Bool { emailValidation.accept("") if email.value.isEmpty { emailValidation.accept("メールアドレスを入力してください。") return false } else if !NSPredicate(format: "SELF MATCHES %@", emailRegex).evaluate(with: email.value) { emailValidation.accept("正しいメールアドレスを入力してください。") return false } return true }
よろしくおねがいします。
追記
やはり多言語化用のLocalizable.stringsを使うか、enumに入れておくのが良さそうですね。
自分の方でも調べてみて、プロジェクト内にmessage.stringsというファイルを作成し(localize化はしない)、 NSLocalizedString("KEY NAME", tableName: "message", comment: "")
として呼び出してあげるのがきれいでよいのではないかと思ったのですがいかがでしょうか?
enumをネストした方がきれいでわかりやすい気もしますが。
message.stringsは以下のように書いてます。
"userNameEmptyError" = "名前を入力してください。"; "emailEmptyError" = "メールアドレスを入力してください。"; "emailInvalidFormError" = "正しいメールアドレスを入力してください。"; "passwordEmptyError" = "パスワードを入力してください。"; "passwordConfirmEmptyError" = "パスワード(確認)を入力してください。"; "passwordConfirmNotMatchError" = "確認用パスワードと一致していません。";
回答2件
あなたの回答
tips
プレビュー