2010-05-18 49 views
0

我正在解析位置列表,並希望基於這些位置返回帶有標誌的UIImage。幫助用循環從可能的匹配項返回UIImage

我有一個字符串的位置。這可能是許多不同的位置,我想在NSArray中搜索此字符串以查找可能的匹配,並且當匹配時,它應該在NSDictionary中找到適當的文件名。

這裏是的NSDictionary的NSArray和的例子:

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: 
        @"franceFlag", @"france", 
        @"greeceFlag", @"greece", 
        @"spainFlag", @"spain", 
        @"norwayFlag", @"norway", 
        nil]; 
NSArray *array = [NSArray arrayWithObjects: 
       @"france" 
       @"greece" 
       @"spain" 
       @"portugal" 
       @"ireland" 
       @"norway", 
       nil]; 

很顯然,我必須在這兩個有更多的國家和標誌。

這裏是我有這麼遠:

-(UIImage *)flagFromOrigin:(NSString *)locationString { 
    NSRange range; 
    for (NSString *arrayString in countryArray) { 
     range = [[locationString lowercaseString] rangeOfString:arrayString]; 
     if (range.location != NSNotFound) { 
      return [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[dictionary objectForKey: arrayString] ofType:@"png"]]; 
     } 
    } 
    return nil; 
} 

現在,上述不實際工作。我錯過了一些東西(也許甚至沒有正確地做到這一點)問題是,locationString可能在同一個國家有幾個位置,描述了這樣的「巴塞羅那,西班牙」,「馬德里,西班牙」,「北西班牙「等,但我只想在這種情況下檢索」西班牙「。 (另外,每個國家的通知上限)。

基本上,我想搜索locationString我傳入的方法與NSArray中列出的國家之一可能的匹配。如果/當找到一個,它應該繼續到NSDictionary中,並根據數組中正確的匹配字符串獲取適當的標誌。我相信最好的方法是從數組中取出字符串,因爲這將是一個精簡版的位置。

任何幫助指向我在最後一位正確的方向是非常感謝。

+0

OK,我可能不應該再提出問題這個清晨。我編輯了上述內容,因爲我找到了一個可行的解決方案。我改變的唯一辦法是將「locationString」轉換爲小寫。如果有人需要做類似的事情,我會留下這個問題:) – runmad 2010-05-18 11:45:50

回答

0

這是我發現自己的答案(也編輯以正確的在上面):

-(UIImage *)flagFromOrigin:(NSString *)locationString { 
    NSRange range; 
    for (NSString *arrayString in countryArray) { 
     range = [[locationString lowercaseString] rangeOfString:arrayString]; 
     if (range.location != NSNotFound) { 
      return [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[dictionary objectForKey: arrayString] ofType:@"png"]]; 
     } 
    } 
    return nil; 
} 
+0

甚至可以將所有圖片命名爲與匹配字符串相同的名稱。這樣你就不必設置NSDictionary或[dictionary objectForKey:arrayString],只需要pathForResource:arrayString – runmad 2010-05-19 20:13:29