2012-08-29 71 views
1

我正在製作應用程序與國家和它的國旗。現在我有一個問題。我有從1到200名稱的標誌。所有名稱都是數字。 (例如,1是澳大利亞,2是美國)。我用隨機在UIImageView顯示標誌。之後,我有4個按鈕,從旗名變成他們的名字。 所有代碼在最後。XCode編號及其本地化值

我有一個數組,我存儲圖像的名稱。

  • 我有一個數組,我存儲圖像的名稱。
  • 和一個名稱爲按鈕的文件。

問題:如何用名稱替換國家號碼? 如何從文件中放入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++; 
     } 
    } 
} 

回答

0

而不是試圖將一個數字映射到國名,只是將映像名稱映射到國名。這樣確切的順序並不重要。在文件中這將是最容易管理的,並且您提到的名稱應該是本地化的。所以你想使用一個特殊的本地化字符串表,將文件名映射到國家名稱。一個方便的方法是NSLocalizedStringFromTable()。要在你的程序中的特定標誌檢索國家名稱可以使用:

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

然後在你的代碼項目本地化的文件添加到您的項目稱爲「FlagToCountry.strings」。它應該具有通常的.strings文件格式的國家映射的所有標誌,例如:

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

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