Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 可以将NSLocalizedString用作字典中的键吗?_Iphone_Objective C_Cocoa_String_Localization - Fatal编程技术网

Iphone 可以将NSLocalizedString用作字典中的键吗?

Iphone 可以将NSLocalizedString用作字典中的键吗?,iphone,objective-c,cocoa,string,localization,Iphone,Objective C,Cocoa,String,Localization,我想在分组表中使用字典键进行输出。这必须与我的所有其他内容一起本地化。我可以使用NSLocalizedString作为密钥吗 NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: first_array, NSLocalizedString(@"First Array", @"The First Array"), second_array, NSLocalizedString(@"Second Array

我想在分组表中使用字典键进行输出。这必须与我的所有其他内容一起本地化。我可以使用NSLocalizedString作为密钥吗

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

你可以,因为它只是一个字符串。也就是说,不要将此技术用于您将要写出并稍后读入的词典,因为用户可能会在这两者之间更改其语言,然后您将查找错误的键。

这看起来像是一个静态词典,将在您的程序中创建一次,然后不再更改。因此,我不认为这有什么问题。我认为,当您创建不可变的字典时,它不会被更改和归档;因为如果是,则存档文件将无法在具有不同区域设置的用户之间交换,因为密钥将不同


但是,如果不创建本地化数组并将其加载到字典中,您只需要将一个本地化的plist文件加载到字典中即可。这可能会使代码更具可读性。

正如Peter指出的,字典只关心密钥是实现NSCopying协议的对象。一个字符串可以统计这一点,就合法性而言,它的内容并不重要

也许在这种情况下这不会是一个问题,但有很多时候,一种语言中的一个单词会映射到另一种语言中的两个不同单词,这取决于该单词的使用上下文。反过来也是可能的,一种语言中的两个单词可能映射到另一种语言中的同一个单词。这是一个不太可能遇到的问题,但最好只将本地化值视为显示给用户的值,并使用其他一些定义更严格的值作为键