Ich NSLocalizedString
in einer bestimmten Nachricht verwenden, das funktioniert gut, wenn der zweite Parameter als Variable übergeben wird, doch irgendwie Use of undeclared identifier 'NSLocalizedString'
und Too many arguments provided to function-like macro invocation
wenn der zweite Parameter genau wie die Variable das gleiche geschrieben war eingestellt. Ich habe Arbeitscode mit der Variable, was in Ordnung ist, ich möchte nur die Gründe für das Scheitern verstehen zu wissen, wie man es in anderen Situationen vermeiden kann.NSLocalizedString - Verwendung von nicht deklarierter Bezeichner Ausgabe
Mit den folgenden Erklärungen:
NSString *branchTitle = [branchDictionary objectForKey:@"Title"];
NSString *localString = [NSMutableString stringWithFormat:@"%@ node title", branchTitle];
Dies funktioniert ohne Fehler fein:
[navItem setTitle:NSLocalizedString(branchTitle, localString)];
... aber das, was für mich identisch scheint, nicht mit den Fehlern oben erwähnt:
[navItem setTitle:NSLocalizedString(branchTitle, [NSMutableString stringWithFormat:@"%@ node title", branchTitle])];
Suche hier und anderswo habe ich keine Erklärung gefunden. Ich las eine Reihe von Treffern auf jeder Fehlermeldung und verschiedenen NSLocalizedString
Probleme, aber nichts, was sie zusammenbindet. Was ich über die zweite Fehlermeldung gefunden habe, beinhaltete möglicherweise ein Problem mit clang und der Anzahl an Kommas in der Anweisung, die darauf hinweist, dass das zusätzliche Komma zwar innerhalb der NSMutableString
Nachricht liegt, aber von NSLocalizedString
als zusätzlicher Parameter angesehen wird. Macht das irgendeinen Sinn?
Nicht wichtig für die Frage, aber die Anweisung dient dazu, die lokalisierte Version eines Navigationsleistentitels basierend auf der englischen Version aus einem Wörterbuch zu setzen, das für verschiedene Ansichten variiert. Der NSMutableString
Teil definiert den Kommentar für die Lokalisierung basierend auf dem englischen Titel.
BEARBEITEN: Nachdem ich dieses Problem nach der akzeptierten Antwort unten gelöst habe, bemerkte ich ein anderes verwandtes Problem. Die Deklaration von localString
erzeugte eine "Unused variable"
Compiler-Warnung, obwohl sie eindeutig verwendet wurde. Dies liegt auch daran, dass es in einem C-Makro ist und der Vollständigkeit halber füge ich einen Link zu einem relevanten Beitrag hinzu, um diese Warnung zu unterdrücken: How can I get rid of an “unused variable” warning in Xcode
Schön, nur das Hinzufügen eines Satzes von Klammern behebt es. NSLocalizedString ist das erste C-Makro, das ich wissentlich in Objective-C verwendet habe. Das ist ein guter Tipp, den man im Auge behalten sollte, wenn andere herumrollen. Vielen Dank! –
froh, geholfen zu haben! – sergio