私はNSLocalizedString
特定のメッセージで使用しています。これは、2番目のパラメーターが変数として渡された場合は正常に機能しますが、失敗しUse of undeclared identifier 'NSLocalizedString'
、Too many arguments provided to function-like macro invocation
2番目のパラメーターが変数が設定されたのとまったく同じように書き込まれた場合に機能します。私は変数を使用してコードを動作させていますが、これは問題ありません。他の状況でそれを回避する方法がわからない理由を理解したいだけです。
次の宣言で:
NSString *branchTitle = [branchDictionary objectForKey:@"Title"];
NSString *localString = [NSMutableString stringWithFormat:@"%@ node title", branchTitle];
これはエラーなしで正常に機能します。
[navItem setTitle:NSLocalizedString(branchTitle, localString)];
...しかし、これは私と同じように見えますが、上記のエラーで失敗します。
[navItem setTitle:NSLocalizedString(branchTitle, [NSMutableString stringWithFormat:@"%@ node title", branchTitle])];
ここや他の場所を検索しても、説明が見つかりません。各エラーメッセージとさまざまな問題に関する多数のヒットを読みましたNSLocalizedString
が、それらを結び付けるものは何もありませんでした。2番目のエラーメッセージについて私が見つけたのは、clangとステートメント内のコンマの数に問題があることを意味し、NSMutableString
メッセージ内に余分なコンマが含まれていても、によって追加のパラメーターとして表示されていたことを示していますNSLocalizedString
。それは意味がありますか?
質問にとって重要ではありませんが、このステートメントは、辞書から取得した英語バージョンに基づいてナビゲーションバータイトルのローカライズバージョンを設定することを目的としています。これは、ビューごとに異なります。このNSMutableString
部分は、英語のタイトルに基づいてローカリゼーションのコメントを定義します。
編集:以下の受け入れられた答えに従ってこの問題を解決した後、私は別の関連する問題に気づきました。の宣言は、明らかに使用されていましたがlocalString
、コンパイラの警告を生成していました。"Unused variable"
これは、Cマクロ内にあるためでもあり、完全を期すために、警告の抑制に関する関連する投稿へのリンクをここに追加しています。Xcodeで「未使用の変数」警告を取り除くにはどうすればよいですか。