2009-06-24 16 views
7

Ich möchte meine Wörterbuchschlüssel für die Ausgabe in einer gruppierten Tabelle verwenden. Dies muss mit all meinen anderen Inhalten lokalisiert werden. Kann ich einen NSLocalizedString als Schlüssel verwenden?Ist es in Ordnung, einen NSLocalizedString als Schlüssel in einem Wörterbuch zu verwenden?

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: 
    first_array, NSLocalizedString(@"First Array", @"The First Array"), 
    second_array, NSLocalizedString(@"Second Array", @"The Second Array"), nil]; 

Antwort

13

Sie können, da es nur eine Zeichenfolge ist. Verwenden Sie diese Technik jedoch nicht für Wörterbücher, die Sie ausschreiben und später wieder einlesen werden, da der Benutzer die Sprache zwischenzeitlich ändern kann und Sie dann nach den falschen Schlüsseln suchen.

2

Dies sieht wie ein statisches Wörterbuch aus, das einmal in Ihrem Programm erstellt und dann nicht mehr geändert wird. Daher sehe ich kein Problem damit. Ich nehme an, dass, während Sie ein nicht änderbares Wörterbuch erstellen, dieses nicht geändert und archiviert wird; Denn wenn dies der Fall ist, kann die Archivdatei nicht zwischen Benutzern mit unterschiedlichen Gebietsschemas ausgetauscht werden, da die Schlüssel anders sind.

Wenn Sie jedoch lokalisierte Arrays erstellen und sie in ein Dictionary laden, können Sie nur eine lokalisierte plist-Datei haben, die in das Dictionary geladen wird. Es könnte Ihren Code lesbarer machen.

4

Wie Peter hervorhebt, interessiert das Wörterbuch nur, dass der Schlüssel ein Objekt ist, das das NSCopying-Protokoll implementiert. Ein String statifiziert das, und sein Inhalt spielt keine Rolle, soweit es die Legalität betrifft.

Vielleicht ist es in diesem Fall kein Problem, aber es gibt viele Male, in denen ein Wort in einer Sprache zwei verschiedenen Wörtern in einer anderen Sprache zugeordnet wird, abhängig vom Kontext der Verwendung des Wortes. Umgekehrt ist auch möglich, dass zwei Wörter in einer Sprache demselben Wort in einer anderen Sprache zugeordnet werden können. Dies ist ein unwahrscheinliches Problem, aber es ist wahrscheinlich am besten, lokalisierte Werte nur als Werte zu behandeln, die Sie dem Benutzer zeigen, und einen anderen, enger definierten Wert als Schlüssel zu verwenden.

Verwandte Themen