XCode Number及其本地化值

时间:2012-08-29 14:31:37

标签: xcode cocoa random nsdictionary

我正在与国家制作应用程序并且它是旗帜。现在我有一个问题。我有从1到200命名的标志。以及数字的所有名称。 (例如,1是澳大利亚,2是美国)。我使用随机在UIImageView中显示标志。之后我有4个按钮,这些按钮从标志名称变成了他们的名字。 最后的所有代码。

我有一个数组,我存储图像的名称。

  • 我有一个数组,我存储图像的名称。
  • 带有按钮名称的文件。

问题:如何用名字替换国家/地区? 如何从文件中输入NSDictionary的所有名称?或者如何才能拥有这样的功能?

抱歉我的英文。 :) 函数代码,它使nextFlag。

- (void)nextFlag
{
    int tmp = random() % [avalibleFlags count];
    NSString *imgString = [avalibleFlags objectAtIndex:tmp]; 
    NSString *path = [[NSBundle mainBundle] pathForResource:imgString ofType:@"png"];
    UIImage *newImage = [UIImage imageWithContentsOfFile:path];
    currentFlagName = imgString;
    [_currentFlag setImage:newImage];
    [avalibleFlags removeObjectAtIndex:tmp];
    NSMutableArray *tmpFlags = [allFlags mutableCopy];
    [tmpFlags removeObjectAtIndex:tmp];
    for (int i=0; i<3; i++) 
    {
        int tmpNumber = random() % [tmpFlags count];
        NSString *stringForButton = [tmpFlags objectAtIndex:tmpNumber];
        [tmpFlags removeObjectAtIndex:tmpNumber];
        [buttonNames insertObject:stringForButton atIndex:i];
    }
    int tmp2 = random() % 4;
    [[_buttons objectAtIndex:tmp2] setTitle:imgString forState:UIControlStateNormal];
    for (int i = 0, j = 0; i<4; i++) {
        if ([[_buttons objectAtIndex:i] currentTitle] != currentFlagName) 
        {
            [[_buttons objectAtIndex:i] setTitle:[buttonNames objectAtIndex:j] forState:UIControlStateNormal];;
            j++;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

不是尝试将数字映射到国家/地区名称,而只是将图像名称映射到国家/地区名称。这样,确切的顺序并不重要。这在文件中最容易管理,正如您所提到的那样,名称确实应该是本地化的。因此,您希望使用一个特殊的本地化字符串表,将文件名映射到国家/地区名称。一种方便的方法是NSLocalizedStringFromTable()。要在程序中检索特定标志的国家/地区名称,请使用:

NSString *countryName = NSLocalizedStringFromTable(imgString, @"FlagToCountry", @"");

然后在您的Code项目中为项目添加一个名为“FlagToCountry.strings”的本地化文件。它应该具有通常的.strings文件格式的国家映射的所有标志,如:

/* Australia */
"aus" = "Australia"

/* USA */
"usa" = "USA"
...