2番目のパラメータが変数として渡された場合にはうまく動作する特定のメッセージで、Use of undeclared identifier 'NSLocalizedString'
とToo many arguments provided to function-like macro invocation
で失敗します設定されました。私は変数を使ってコードを作業していますが、それは他の状況でそれを避ける方法を知らない理由を理解したいだけです。次の宣言ではNSLocalizedString - 宣言されていない識別子の問題の使用
:
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マクロの中にあり、完全性のために、私はこの警告を抑止する方法について関連する投稿へのリンクを追加しています。How can I get rid of an “unused variable” warning in Xcode
ニースは、カッコのセットを追加するだけで修正されます。 NSLocalizedStringはObjective-Cの中で私が意図して使った最初のCマクロです。他の人が動いているときに気をつける良いヒントです。ありがとう! –
助けてくれると嬉しいです! – sergio